我有一種情況,我需要添加一個不是主鍵的Guid屬性,並且可以與表中的多個對象共享。在數據庫上生成Guid,但只有當未在實體中設置時
我想要做的是:
- 生成的GUID在數據庫上時,我沒有給它的值
- 設置一個GUID(而不是產生的話),當我有它值
這兩者都只在插入時完成,更新不會觸及這些值。
我曾嘗試:
- 添加[DatabaseGenerated(DatabaseGeneratedOption.Identity)]屬性:當我不需要設置的GUID手動
- 添加[DatabaseGenerated(DatabaseGeneratedOption纔有效。計算)]屬性:不,當我沒有設定的GUID手動
我已經看到了很多有關這個主題的時候,和最近的事情將是這篇文章: http://www.davepaquette.com/archive/2012/09/23/calculated-columns-in-entity-framework-code-first-migrations.aspx
但是我們沒有(也不會)在我們的項目中使用遷移,所以這似乎不合適。
或這太問題,但是這將意味着產生在.net中的GUID(這似乎不是很乾淨,至少在我看來):EF, Code First - How to set a custom Guid identity value on insert
有沒有一種方法來生成的GUID數據庫並且在我需要首先在EF代碼中設置它?
如果不是,那麼會有什麼好的選擇?在.Net端生成Guids是否真的是一個糟糕的主意? (我可以與去,如果沒有別的可能的話)
您可以編輯您的遷移並設置爲默認值NEWID(),並將其標記爲databsegeneratedoption.identity – Monah
@HadiHassan其實我們不(不會)在此使用的遷移項目......你知道另一種設置「newid()」的方法嗎? – ppetrov
我想你只能用插入觸發器來設置guid,以防萬一出現空值。 –