2013-09-23 5 views
6

私はEFの上にいくつかのエクステンションを書こうとしています。最初のObjectContextを調べてその中のエンティティタイプを取得できる必要があります。私はこれがメタデータワークスペースのどこかで利用可能になるはずだと思うが、どこを見るか分からない。私はEF 5を使用しています。最初にEFコードを使用して実行時にObjectContextからエンティティタイプのリストを取得するにはどうすればよいですか?

コンテキストの作成にはコード生成を使用していませんし、DbContextベースクラスに型固有のDbSetアクセサを置くこともありません。したがって、私は単にDbContext/ObjectContextを参照してそのようなプロパティを調べることはできません。

答えて

6

私は、これは動作するはずだと思う:

var objectItemCollection = 
    (ObjectItemCollection)((IObjectContextAdapter)ctx) 
    .ObjectContext.MetadataWorkspace.GetItemCollection(DataSpace.OSpace); 

foreach(var entityType in objectItemCollection.GetItems<EntityType>()) 
{ 
    Console.WriteLine(objectItemCollection.GetClrType(entityType).FullName); 
} 
関連する問題