如何以编程方式从EF CodeFirst dbcontext获取dbset类的元数据?这是为了代码生成目的而循环使用。
答案 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);
}
谢谢, 将