我在 EF4 代码优先中遇到了一个小问题(我认为这实际上可能是仅使用 CF 的问题)。
我正在尝试使用类似于以下的代码从我的上下文元数据中获取实体类型的一些信息:
return (context as System.Data.Entity.Infrastructure.IObjectContextAdapter)
.ObjectContext.MetadataWorkspace
.GetItems<EntityType>(DataSpace.CSpace)
.Where(x => x.FullName == ModelType.FullName)
.FirstOrDefault();
ModelType 是一个参数,它包含要搜索的实体的 System.Type。它应该返回一个带有类型元数据的 System.Data.Metadata.Edm.EntityType 实例。
DbSet 中引用的模型名为 MyApp.Models.User,并且 DbContext 类是在 MyApp.Servicing 命名空间下创建的
现在我遇到的问题是 System.Data.Metadata.Edm.EntityType 的 FullName 属性是MyApp.Servicing .User (O_O) 而不是 MyApp.Models.User。
我认为可能是 EF 正在嘲笑 edm 元数据,因为我在代码优先中没有 EDMX,但这只是猜测。
知道为什么会发生这种情况吗?我可以用另一种方式解决它,但想知道为什么。