如何从EF CodeFirst DbContext获取dbsets元数据?

时间:2012-02-27 18:38:35

标签: ef-code-first

如何以编程方式从EF CodeFirst dbcontext获取dbset类的元数据?这是为了代码生成目的而循环使用。

1 个答案:

答案 0 :(得分:16)

经过一些额外的研究后,我想我找到了答案。基本上,您必须下载到ObjectContext,即DbContext作为包装器的原始EF上下文,并使用下面的MetadataWorkspace信息。

如果直接从DbContext获取此答案,请添加另一个答案,因为它更直观,更有优势(如果有的话)。

using System.Data.Metadata.Edm;
using System.Data.Objects;
using System.Data.Entity.Infrastructure;

...

using (dbcontext context = new TestContext())
{
   ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
   MetadataWorkspace workspace = objContext.MetadataWorkspace;
   IEnumerable<EntityType> tables = workspace.GetItems<EntityType>(DataSpace.SSpace);

}

谢谢, 将