【发布时间】:2020-06-03 14:27:36
【问题描述】:
我有以下课程
public class Order
{
public int OrderID {get;set;}
/*...
Some other properties
...*/
public ICollection<OrderDetail> Details {get;set;}
}
public class OrderDetail
{
public int OrderID {get;set;}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int OrderDetailID {get;set;}
/*...
Some other properties
...*/
public Order Order {get;set;}
}
我还在 OnModelCreation 中指定了如下关系:
modelBuilder.Entity<OrderDetail>().HasKey(detail => new { detail.OrderID, detail.OrderDetailID});
modelBuilder.Entity<OrderDetail>().HasOne(detail => detail.Order)
.WithMany(order => order.Details)
.HasForeignKey(detail => detail.OrderID).OnDelete(DeleteBehavior.Cascade);
一切正常,没有任何错误。
我的问题是,在这种情况下,当我创建一个包含详细信息的订单时,OrderDetailID 会针对所有详细信息递增,并且我在数据库中得到以下信息。
我了解 OrderDetailID 的工作方式与我的代码中的配置相对应。但是我的问题是我需要在数据库中获取如下图片:
OrderID OrderDetailID .... 17 1 3 15.0000 15.0000 EA 17 2 3 15.0000 15.0000 EA 18 1 1 25.0000 0.0000 EA 18 2 1 25.0000 0.0000 EA换句话说,我需要将每个新订单的 OrderDetailID 重置为 1。
我在 Entity Framework 中找不到任何配置选项来让它以我需要的方式工作。
提前谢谢你。
【问题讨论】:
-
您可以在数据库中创建一个触发器,它应该在插入时增加它
-
@DavidEdel 触发器应该如何确定是增加值还是重置为 1?
-
见下方答案
标签: c# asp.net-core entity-framework-core