我正在尝试在EF之上编写一些扩展,我需要能够首先检查代码ObjectContext并检索其中的实体类型。我觉得这应该在元数据工作区的某个地方可用,但我不知道在哪里看。我正在使用EF 5。
请注意,我们不使用任何类型的代码生成来创建上下文,也不会在DbContext基类上放置特定于类型的DbSet访问器。因此,我不能简单地反映DbContext / ObjectContext来查看这样的属性。
答案 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);
}