5

メタデータから、エンティティのプロパティがナビゲーション プロパティであるかどうかを確認する方法はありますか?

プロパティが ICollection を実装しているかどうかを調べることで、プロパティがエンティティ コレクションであるかどうかを判断できます。そこから、それがナビゲーション プロパティであるかどうかを判断できます。

しかし、プロパティがエンティティ コレクションではなく、別のエンティティへの参照のみである場合はどうでしょうか。

4

2 に答える 2

6

MetdataWorkspace から O-Space EDM エンティティ タイプを取得でき、NavigationProperties プロパティがあります。以下に例を示します。

var workspace = ((IObjectContextAdapter) ctx).ObjectContext.MetadataWorkspace;
var itemCollection = (ObjectItemCollection)(workspace.GetItemCollection(DataSpace.OSpace));
var entityType = itemCollection.OfType<EntityType>().Single(e => itemCollection.GetClrType(e) == typeof(MyEntity));
foreach(var navigationProperty in entityType.NavigationProperties)
{
    Console.WriteLine(navigationProperty.Name);
}
于 2012-04-20T21:11:24.153 に答える