无法找到EntityType错误的EF映射和元数​​据信息

Rez*_*ian 38 mapping entity-framework metadata entity-framework-4

我使用Entity Framework 4.0 RC时遇到异常.我的实体框架模型封装在一个私有程序集中,其名称为Procurement.EFDataProvider,我的POCO类位于另一个程序集中.Procurement.Core Core(业务逻辑)和EFDataProvider(数据访问)之间的关系是一个名为DataProvider的工厂

所以当我尝试创建一个对象集

objectSet = ObjectContext.CreateObjectSet<TEntity>();
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

无法找到EntityType'Procurement.Core.Entities.OrganizationChart'的映射和元数​​据信息.

jon*_*iba 62

对于其他任何处理错误的人,我认为值得一提的是我发现的一些情况导致了这个(非常无益的)错误:

  • 拼写错误的属性(区分大小写!)
  • POCO类中缺少的属性
  • POCO和实体类型之间的类型不匹配(例如,int而不是long)
  • POCO中的枚举(根据我的理解,EF现在不支持枚举)

可能还有其他原因.

HTH


Joh*_*ell 12

这可能是因为EF无法找到嵌入的映射信息.你的连接字符串里面你可能会有类似他的东西:

metadata=res://*/Models.MyModels.csdl|...etc
Run Code Online (Sandbox Code Playgroud)

*是一个通配符,告诉对象上下文尝试查找嵌入的映射信息,我认为,扫描所有已加载的程序集.如果未加载程序集,EF将无法找到它.

您需要做的是为连接字符串提供有关嵌入映射信息的位置的更多信息.将*更改为映射代码的特定程序集名称:

metadata=res://Procurement.EFDataProvider/Models.MyModels.csdl
Run Code Online (Sandbox Code Playgroud)

如果失败,找到程序集并使用以下命令将其直接加载到ObjectContext中:

ObjectContext.Metadataworkspace.LoadFromAssembly();
Run Code Online (Sandbox Code Playgroud)