我正在使用 EDMX 文件中的 T4 模板生成 POCO(可以说它们是MyEntityObject的子类)。
我有 3 个实体,例如:
- MyTable1(主键:MyTable1ID)
- MyTable2(主键:MyTable2ID)
- MyTable3(主键:MyTable3ID)
这些实体具有以下关系:
MyTable1.MyTable1ID <=> MyTable2.MyTable1ID(MyTable1ID 是 MyTable1 的外键)
MyTable2.MyTable2ID <=> MyTable3.MyTable2ID(MyTable2ID 是 MyTable2 的外键)
或者换个角度看:
我的表 1 <= 我的表 2 <= 我的表 3
我想提取所有外键关系
NavigationProperty[] foreignKeys = entity.NavigationProperties.Where(np => np.DeclaringType == entity && ((AssociationType)np.RelationshipType).IsForeignKey).ToArray();
forewach (NavigationProperty foreignKey in foreignKeys)
{
// generate code....
}
我的问题:如何提取两个实体之间链接的列名?
像这样的东西:
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";