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