3
我需要在我的實體框架應用程序中實現「按年份」執行「移位」操作。更新操作違反唯一約束條件
爲了簡化問題,假設我有一個實體/表有一個外鍵FK其他一些表和年(INT,INT)。用戶可能會將實體年數轉移到未來,因此我需要複製2017年到2018年的數據等等。
數據庫中存在一個限制,表示該對(FK,YEAR)必須是唯一。
當我在內存中執行「shift」並將更改發送到數據庫時SaveChanges我收到數據庫中的一個錯誤,我違反了唯一約束。我想它試圖逐行執行更新,因此違規。
如果我按年降序排列集合(所以如果逐行發送不會發生重複),則會發生相同的錯誤。
我的解決方法是刪除的舊數據,並與新的年插入新的數據,但我認爲有可能是一個更清潔的解決方案......
您是否嘗試先禁用該約束,進行更新,然後重新啓用它? – AgapwIesu
您必須將'identity insert'設置爲on,執行操作並再次將其關閉。 – DiskJunky
您不希望多行具有相同的'ID'值,假設它也是您的主鍵。如果您試圖添加新記錄而不是更新現有記錄,那麼您不應該擁有相同的「ID」,因此您的唯一約束最有可能毫無意義,因爲其中一個值始終會發生變化。相反,如果您正在更新該記錄,則還有其他事情正在進行。我們需要了解數據庫表是如何定義的,以及您用來執行** shift **和保存的代碼。 – krillgar