对不起,如果这是之前问过。我找不到它。具有相同订单ID的多个记录从前一个MAX值递增
我有一个表订单这样的:
`id | orderId | productId`
订单可能有多个产品,但他们都应该有相同的订单ID。 在我的代码中: int nextOrder=db.Orders.Max(m=>m.orderId)+1;//???!!!! foreach(var p in productList) { var o=new Order(); o.orderId=nextOrder;//??????????????????? o.productId=p.productId; db.Orders.Add(o); } db.SaveChanges();
但是,这不是线程安全的 - 当我处理一个订单时,另一个线程可能会得到相同的订单ID。我该如何解决这个问题,以插入多个记录,其中相同的订单ID从前一个MAX值增加? 谢谢!
您应该将产品添加到集合'order.Products'中,EF将完成其余工作。 (因为订单有一个自动增量列,如下所述)。 –
@Gert Arnold我希望避免创建另一个表**订单**,因为我没有与整个订单相关的属性。 – shlasasha
那么它有什么用处呢?这只不过是一个与无关的增值Id值。通常情况下,这个模型将由三个表格组成,Order,Product和连接表都以多对多关系连接(表格)。 –