對不起,如果這是之前問過。我找不到它。具有相同訂單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和連接表都以多對多關係連接(表格)。 –