7

指定された DbContext インスタンスから POCO の型を取得する方法はありますか?

4

3 に答える 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 に答える