4

エンティティ モデル内のエンティティのすべての外部キーを検索したいと考えています。

以下を使用して、エンティティのすべてのプロパティのリストを取得しました。

var workspace = _entities.MetadataWorkspace; 
var entityType = workspace.GetItems<EntityType>(DataSpace.CSpace).FirstOrDefault(e => e.Name == tablename);
var keyNames = entityType.Members.Select(k => k.Name);

外部キーの関連付けを持つプロパティのみを見つける方法はありますか? また、それが関連付けられている参照エンティティのそのプロパティは?

4

1 に答える 1

8

私は解決策を考え出しました:

var fk = _entities.MetadataWorkspace.GetItems<AssociationType>(DataSpace.CSpace).Where(a => a.IsForeignKey);
//check if the table has any foreign constraints for that column
var fkname = fk.Where(x => x.ReferentialConstraints[0].ToRole.Name == tablename).Where(x => x.ReferentialConstraints[0].ToProperties[0].Name == columnname);
//Get the corresponding reference entity column name
var refcol = fkname.Select(x => x.ReferentialConstraints[0].FromProperties[0].Name).First();
于 2012-06-06T09:01:00.960 に答える