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

Wil*_*llC 14 ef-code-first

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

Wil*_*llC 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);

}
Run Code Online (Sandbox Code Playgroud)

谢谢,威尔