如何在运行时首先使用EF代码从ObjectContext获取实体类型列表?

时间:2013-09-23 01:00:40

标签: c# entity-framework

我正在尝试在EF之上编写一些扩展,我需要能够首先检查代码ObjectContext并检索其中的实体类型。我觉得这应该在元数据工作区的某个地方可用,但我不知道在哪里看。我正在使用EF 5。

请注意,我们不使用任何类型的代码生成来创建上下文,也不会在DbContext基类上放置特定于类型的DbSet访问器。因此,我不能简单地反映DbContext / ObjectContext来查看这样的属性。

1 个答案:

答案 0 :(得分:7)

我认为这应该有效:

var objectItemCollection = 
   (ObjectItemCollection )((IObjectContextAdapter)ctx)
   .ObjectContext.MetadataWorkspace.GetItemCollection(DataSpace.OSpace);

foreach(var entityType in objectItemCollection.GetItems<EntityType>())
{
    Console.WriteLine(objectItemCollection.GetClrType(entityType).FullName);
}