0

我不确定如何获取对象的EntityFramework元数据Entity(我在我的 EF 设计器/edmx 上有)Poco

例如。

我的图表有一个名为User. 我还有一个名为User. 我的印象是实体名称和 Poco 需要同名,因此约定可以自动映射两者(以及具有相同属性名称的 poco 等......)

因此,如果我有一个 Poco 类型,我如何检索实体并因此检查该实体以查看它的元数据,例如EntityKeyorStoreGeneratedPattern等​​?

哦 - 顺便说一句......我不知道 Poco 类型是什么......意思......该类使用泛型......

public class GenericRepository<T> : IRepository<T> where T : class
{ ... }

所以,我想我将不得不询问上下文......抓住我有一个name == typeof(T).Name或其他的实体......

4

2 回答 2

1

对映射元数据的访问通常由ObjectContext.MetadataWorkspace. CTP5 隐藏ObjectContext了实例,其与映射相关的大部分映射类(基于DbMappingMetadataItem)是内部的或仅包含内部成员。

看起来您DbContext是从 EDMX 自动生成的。在这种情况下,您可能可以DbContext通过调用接受的构造函数来创建它ObjectCotnext。在这种情况下,您将可以访问其ObjectContext所有方法/属性。

你为什么需要它?如果您需要在存储库中做一些特殊的事情,您应该为该类型创建特殊的存储库。通用存储库只是非常基本的解决方案的概念。

于 2011-02-02T09:02:26.200 回答
0

如果您可以访问 ObjectContext (我认为您必须拥有,因为没有上下文 EntityKey/EntityState 就没有意义),您可以使用以下

ObjectStateEntry ose = 
    context.ObjectStateManager.GetObjectStateEntry(yourObject);

从那里,您可以获得各种有趣的属性:http: //msdn.microsoft.com/en-us/library/system.data.objects.objectstateentry.aspx

您可能还会发现TryGetObjectStateEntry(...)它很方便。

于 2011-02-02T01:52:43.930 回答