通过简单的示例表格显示
Table: Customer
--------------
Id: int
Name: varchar
Order_Id: int (Foreign Key => Order.Id)
Table: Order
------------
Id: int
Number: varchar
现在,我有以下代码来获取导航属性并且工作得很好。
public static string[] GetForeignKeyNames(this DbContext context, Type entityType)
{
var metadata = ((IObjectContextAdapter)context).ObjectContext.MetadataWorkspace;
// Get the mapping between CLR types and metadata OSpace
var objectItemCollection = ((ObjectItemCollection)metadata.GetItemCollection(DataSpace.OSpace));
// Get metadata for given CLR type
var entityMetadata = metadata
.GetItems<EntityType>(DataSpace.OSpace)
.Single(e => objectItemCollection.GetClrType(e) == entityType);
return entityMetadata.NavigationProperties.Select(p => p.Name).ToArray();
}
上面,当调用entityType = typeof(Customer)时,返回“Order”
但是,现在对于函数中的上述导航属性,我想知道Customer中的哪个列名是Order表的外键。即,我想要像
这样的信息NavigationTable: Order
NavigationColumn: Id
SourceTable: Customer
SourceColumn: Order_Id
如何从导航属性中获取上述列信息?或者我需要采用不同的方法吗?
由于