实体框架 - 查找完整的外键信息

时间:2016-04-27 10:34:12

标签: c# .net sql-server entity-framework entity-framework-6

通过简单的示例表格显示

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

如何从导航属性中获取上述列信息?或者我需要采用不同的方法吗?

由于

0 个答案:

没有答案