2015-03-31 129 views
0

我使用Asp.Net MVC 5 +實體框架6.假設我有這種模式:自動生成的每次更新的唯一編號列

public class ModelName 
{ 
    [Key] 
    public int Id { get; set; } 

    public int UniqueColumn { get; set; } 
} 

現在我想UniqueColumn每當我使用db.SaveChangesAsync();進行更新(意思是INSERTs和UPDATEs)。

我試過使用DatabaseGeneratedOption.Identity,但插入後它不會更新。我嘗試將其設置爲0,但它給了我一個錯誤,指出我無法修改Identity列。

+0

只是在這裏稍微搜索,顯示了很多相關的問答...你有映射設置? http://stackoverflow.com/questions/18905268/entity-framework-does-not-update-an-auto-increment-field-of-a-computed-key-in-my – kenny 2015-03-31 10:42:38

+0

@kenny嗯。我對這個貼圖的東西沒有任何經驗,但我不確定它是相關的。 (也許我錯了)。這個問題似乎在尋找一個主鍵列。我只想爲每條記錄設置一個唯一的代碼,但只要記錄被更新,它就會改變。 – 2015-03-31 10:51:38

+0

你想要一些像[時間戳] public byte [] Timestamp {get;組; } – pjobs 2015-03-31 12:02:18

回答

0

你是什麼意思「要更新」?你需要在每個動作上使其+1? 如果是這種情況,請嘗試使其成爲靜態並按類名訪問,因此它不依賴於此類的對象。更新或插入行動後,只是做

ModelName.UniqueColumn++; 
+0

這可以工作,但很容易出現併發問題。 – 2015-03-31 10:49:23

+0

順便說一句,它不是靜態的。我想爲每條記錄提供一個唯一的值。 – 2015-03-31 10:51:04

+0

我不知道你在這個變量中需要什麼。如果這是唯一ID值,您可以這樣做: 您可以創建額外的變量,從數據庫中獲取最後的ID號。這應該是靜態的。假設這將是名爲LastID的類中的靜態字段然後,您可以執行如下操作: ModelName.LastID ++ newRecord.UniqueColumn = LastID 要獲取LastID,只需按ID排序列表並取List.Last()。Id – titol 2015-03-31 13:00:34