使用数据库列而不是实体类型属性定义关联

发布于 2024-11-25 09:23:14 字数 860 浏览 2 评论 0原文

public class Order {
   public int OrderID {get; set;}
   public DateTime DateOrdered { get; set; }
   public ICollection<OrderLine> OrderLines { get; set; }
}

public class OrderLine{
    public int OrderLineID { get; set; }
    public int OrderID {get; set; } // I want to remove this
    public string ItemName { get; set;}
    public Int Qty { get; set; }
}

我如何使用 Fluent API 映射这些?我在存储库模式中使用它们,其中 Order 将是聚合的根。因此,我不希望 OrderLine 引用 Order 或具有 OrderID。由于 OrderLine 仅因为它是 Order 的子项才有意义。

目前我正在使用这个:

HasMany<OrderLine>(x => x.OrderLines).WithRequired().HasForeignKey(x => x.OrderID);

我在这里使用现有的数据库结构,理想情况下我会使用数据库列名称来映射它。因此,以某种方式告诉它使用 tblOrderLine.colOrderId 而不是 OrderLine.OrderID

public class Order {
   public int OrderID {get; set;}
   public DateTime DateOrdered { get; set; }
   public ICollection<OrderLine> OrderLines { get; set; }
}

public class OrderLine{
    public int OrderLineID { get; set; }
    public int OrderID {get; set; } // I want to remove this
    public string ItemName { get; set;}
    public Int Qty { get; set; }
}

How would I map these using the Fluent API? I am using these in a repository pattern where Order will be the root of the aggregate. As such I do not want OrderLine to have a reference to Order or have an OrderID. Since the OrderLine only makes any sense because its a child of Order.

Currently I am using this:

HasMany<OrderLine>(x => x.OrderLines).WithRequired().HasForeignKey(x => x.OrderID);

I am using an existing database structure here and ideally I would map this using the database column name. So somehow tell it to use tblOrderLine.colOrderId rather then OrderLine.OrderID.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白芷 2024-12-02 09:23:14

您可以使用Map()方法来映射您的FK

HasMany<OrderLine>(x => x.OrderLines)
.WithRequired()
.Map(m => m.MapKey("colOrderId"));

You can use the Map() method to map your FK

HasMany<OrderLine>(x => x.OrderLines)
.WithRequired()
.Map(m => m.MapKey("colOrderId"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文