0

我正在使用EF4和ASP.NET。實體Subject的字段Id設置爲在MySql中自動遞增。這通常很好,但有一次我需要爲Id設置自定義值。在EF4中爲自動增量列設置自定義值

Subject sNone = new Subject { Id = 0, Title = "None", Code = "00" }; 
ctx.Subjects.AddObject(sNone); 

這確實在數據庫中創建了一個新的主題。但是,其Id未設置爲0 - 它被設置爲自動增量值。

任何想法如何解決這個問題?

回答

1

你不能用EF來解決這個問題。一旦該列自動增加,它將在實體模型中配置爲StoreGeneratedPattern.Identity。這意味着:

  • 列將填充到數據庫中,插入後傳回給應用程序的值。
  • 這也意味着該列的值永遠不會從您的應用程序傳遞。

如果你關掉StoreGeneratedPattern你將失去​​這一切的行爲,因爲此列的值將被視爲任何其他,它會一直傳遞到數據庫=你的汽車增量的邏輯是行不通的。

還有一個單獨的問題 - 是否允許在MySQL中顯式設置自動遞增列的值?在MSSQL服務器中,除非您明確地打開連接,否則不會。

使用顯式標識插入此記錄的最佳方法是使用舊的ADO.NET或ObjectContext上的ExecuteStoreCommand直接執行SQL插入。

相關問題