映射到嵌套类

时间:2011-09-28 13:29:31

标签: c# .net sql-server entity-framework-4.1 nested-class

我的应用程序运行时出现以下错误:

  

System.InvalidOperationException:类型   未映射“ContactModels + Contact”。检查一下   尚未使用Ignore方法或显式排除类型   NotMappedAttribute数据注释。验证是否已定义类型   作为一个类,不是原始的,嵌套的或通用的,并且不继承   来自EntityObject。

当我的DBContext类尝试初始化实体时失败:

public class DB : DbContext
{
    public DbSet<ContactModels.Contact> Contacts { get; set; }
    ....
}

Contact模型如下:

public class ContactModels
{
    public class Contact
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        ...
    }
}

连接字符串:

<add name="DB" connectionString="Data Source=XXXXX;Initial Catalog=XXXX;Trusted_Connection=True"
  providerName="System.Data.SqlClient" />

我得到的错误是数据库是否存在,或者即使它不存在,我还要初始化它:

protected void Application_Start()
{
    Database.SetInitializer(new CreateDatabaseIfNotExists<Models.DB>());
    ....
}

这是我第一次使用EF,我已经学过一些教程,但是我使用的是SQL Server 2008 R2,我更喜欢自己创建数据库,而不是让EF为我创建它。虽然在这一点上我会采取任何一种方法。

2 个答案:

答案 0 :(得分:9)

错误的部分是您正在尝试映射嵌套类。实体框架不支持它。

答案 1 :(得分:0)

我不知道您的代码有什么问题,但如果您想从数据库开始并生成C#代码,请使用实体框架电源工具CTP1 http://blogs.msdn.com/b/adonet/archive/2011/05/18/ef-power-tools-ctp1-released.aspx