指定された DbContext インスタンスから POCO の型を取得する方法はありますか?
質問する
3905 次
3 に答える
6
Unfortunately, I couldn't edit the accepted answers - you just need to change the dataspace used as follows
var items = mdw.GetItems<EntityType>(DataSpace.OSpace);
to get your POCO classes instead of the EF proxies.
于 2016-06-23T09:52:15.110 に答える
6
MetadataWorkspaceにアクセスする必要があります
public class MyContext : DbContext
{
public void Test()
{
var objectContext = ((IObjectContextAdapter)this).ObjectContext;
var mdw = objectContext.MetadataWorkspace;
var items = mdw.GetItems<EntityType>(DataSpace.CSpace);
foreach (var i in items)
{
Console.WriteLine("Class Name: {0}", i.Name);
}
}
于 2012-09-23T15:48:59.613 に答える
3
@Lei Yang: これを使用して、すべてのタイプをリストに入れることができます。
var objectContext = ((IObjectContextAdapter) dbContext).ObjectContext;
var mdw = objectContext.MetadataWorkspace;
var items = mdw.GetItems<EntityType>(DataSpace.CSpace);
var dbContextAssembly = dbContext.GetType().Assembly;
var entityTypes = new List<Type>();
foreach (var i in items) {
entityTypes.Add(dbContextAssembly.GetType(i.FullName));
}
于 2015-02-02T07:53:44.147 に答える