2016-01-20 33 views
2

我正在使用EF代碼優先,並且我想以編程方式標識哪些屬性是導航屬性,哪些是外鍵,哪些是Ids。例如,在這個經典的Order/Item示例中;查詢您的實體框架上下文模型的API?

public class Order 
{ 
    public int Id { get; set; } 
    public virtual ICollection<OrderItem> Items { get; set; 
} 

public class OrderItem 
{ 
    public int Id { get; set; } 
    public int OrderId { get; set; } 
    public Order Order { get; set; } 
    public int ProductCount { get; set; } 
} 

作爲程序員,我很清楚發生了什麼; OrderItem.OrderId是我的外鍵,OrderItem.Order是導航屬性,而Order.Items是該導航屬性的反轉。同樣很明顯,EF知道這一點,因爲它已經不在模型構建階段

但是,我希望能夠以編程方式執行此操作;所以我希望有一個API,可能與Reflection有類似的感覺,這可能會讓我提問;

var model = CreateModelFor(salesContext); 
var foreignKeys = model.ForeignKeysFor(typeof(Order)); // ["OrderId"] 
var navigationProperties = model.NavigationPropertiesFor(typeof(Order)) // [`Order`] 

在EF中是否存在這樣的事情?

回答