我不确定如何为EntityFramework
对象获取Entity
(我在我的EF设计人员/ edmx上)的Poco
元数据。
例如。
我的图表中有一个名为User
的实体。我还有一个名为User
的Poco类。我的印象是实体名称和Poco需要是相同的名称,因此约定可以自动映射两者(以及具有相同属性名称的poco等等)
因此,如果我有一个类型Poco,我如何检索实体,因此检查该实体是否可以看到它的元数据,如EntityKey
或StoreGeneratedPattern
等?
哦 - 顺便说一句......我不知道Poco类型是什么......意思是......班级使用泛型......
public class GenericRepository<T> : IRepository<T> where T : class
{ ... }
所以,我以为我将不得不问上下文...抓住我有name == typeof(T).Name
或其他的实体...
答案 0 :(得分:1)
访问映射元数据通常由ObjectContext.MetadataWorkspace
执行。 CTP5隐藏ObjectContext
实例,并且与映射相关的大多数映射类(基于DbMappingMetadataItem
)都是内部的或仅包含内部成员。
您的DbContext
似乎是从EDMX自动生成的。在这种情况下你可以做的是通过调用接受DbContext
的构造函数来创建ObjectCotnext
。在这种情况下,您将可以访问ObjectContext
及其所有方法/属性。
你为什么需要它?如果您需要在存储库中执行特殊操作,则应为该类型创建特殊存储库。通用存储库仅适用于非常基本的解决方案。
答案 1 :(得分:0)
如果你有权访问ObjectContext(我认为你必须拥有,因为没有上下文,EntityKey / EntityState没有意义),你可以使用以下
ObjectStateEntry ose =
context.ObjectStateManager.GetObjectStateEntry(yourObject);
从那里,您可以获得各种有趣的属性:http://msdn.microsoft.com/en-us/library/system.data.objects.objectstateentry.aspx
您可能还会发现TryGetObjectStateEntry(...)
非常方便。