EDMX ファイルの T4 テンプレートを使用して、 POCO ( MyEntityObjectのサブクラスであるとしましょう) を生成しています。
私は3つのエンティティを持っています。
- MyTable1 (主キー: MyTable1ID)
- MyTable2 (主キー: MyTable2ID)
- MyTable3 (主キー: MyTable3ID)
これらのエンティティには次の関係があります。
MyTable1.MyTable1ID <=> MyTable2.MyTable1ID (MyTable1ID は MyTable1 への外部キーです)
MyTable2.MyTable2ID <=> MyTable3.MyTable2ID (MyTable2ID は MyTable2 への外部キーです)
または別のビューで:
MyTable1 <= MyTable2 <= MyTable3
すべての外部キー関係を抽出したい
NavigationProperty[] foreignKeys = entity.NavigationProperties.Where(np => np.DeclaringType == entity && ((AssociationType)np.RelationshipType).IsForeignKey).ToArray();
forewach (NavigationProperty foreignKey in foreignKeys)
{
// generate code....
}
私の質問: 2 つのエンティティ間でリンクされている列名を抽出するにはどうすればよいですか?
このようなもの:
void GetLinkedColumns(MyEntityObject table1, MyEntityObject table2, out string fkColumnTable1, out string fkColumnTable2)
{
// do the job
}
例では
string myTable1Column;
string myTable2Column;
GetLinkedColumns(myTable1, myTable2, out myTable1Column, out myTable2Column);
結果は
myTable1Column = "MyTable1ID";
myTable2Column = "MyTable2ID";