gpt4 book ai didi

c# - 用于查询 Entity Framework 上下文模型的 API?

转载 作者:行者123 更新时间:2023-11-30 23:30:38 26 4
gpt4 key购买 nike

我正在使用 EF 代码优先,我想以编程方式识别哪些属性是导航属性,哪些是外键,哪些是 ID。例如,在这个经典的订单/项目示例中;

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中有这样的东西吗?

最佳答案

您需要下拉到 ObjectContext,然后您可以通过浏览 MetadataWorkspace 来获取有关该模型的所有信息.这个 API 及其背后的整个模型非常可怕(导航属性是最复杂的)。

此线程包含一个可帮助您入门的示例:entity framework check if property is navigation property

关于c# - 用于查询 Entity Framework 上下文模型的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34906026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com