2 回答
TA貢獻1752條經驗 獲得超4個贊
只需添加到@DevilSuichiro的原始注釋中,您需要在實體的屬性bundle_id上設置DatabaseGeneratedOption.None,如下所示。提供了完全限定的名稱,因此您不必尋找名稱空間:)
[Key]
[Column(Order = 0)]
[StringLength(255)]
[DatabaseGenerated(DatabaseGeneratedOption.None)] // Located here: System.ComponentModel.DataAnnotations.Schema
public string bundle_id { get; set; }
為什么?
默認情況下,默認情況下在Entity Framework中的主鍵列上設置DatabaseGeneratedOption.Identity。這表明數據庫負責生成值。結果,由于期望SQL生成值,因此Entity Framework將從任何生成的SQL Insert語句中排除該列。
要查看實際效果,請使用
yourDbContext.Database.Log() = (query) => Debug.WriteLine(query);
在執行SaveChanges或運行SQL事件探查器以查看生成的SQL中的差異之前。
更新
為了清楚起見,當您使用Database.Log()=(query)=> Debug.WriteLine(query);時,結果將輸出到Visual Studio的“診斷工具”窗口中。除非您先前關閉了窗口,否則在啟動調試會話時默認情況下會啟動該程序。
如果在調試時沒有顯示給您,則可以在這里找到:調試-> Windows->顯示診斷工具。
下面是一個示例輸出,所以你知道你在找什么:

- 2 回答
- 0 關注
- 166 瀏覽
添加回答
舉報
