我的应用程序运行时出现以下错误:
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为我创建它。虽然在这一点上我会采取任何一种方法。
答案 0 :(得分:9)
错误的部分是您正在尝试映射嵌套类。实体框架不支持它。
答案 1 :(得分:0)
我不知道您的代码有什么问题,但如果您想从数据库开始并生成C#代码,请使用实体框架电源工具CTP1 http://blogs.msdn.com/b/adonet/archive/2011/05/18/ef-power-tools-ctp1-released.aspx