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中是否存在這樣的事情?