有沒有辦法讓實體框架在插入上使用SQL默認值,但是卻允許更新字段。我們有一個SQL表具有標識列「id」和另一列設置爲ident_current(「table」)的實例。我知道以默認值插入字段的唯一方法是將該字段設置爲DatabaseGenerated(DatabaseGeneratedOption.Computed)
,以便在插入時忽略它。但是,通過擁有該屬性,我們無法對列進行更新。它也是一個自引用的外鍵,所以我們不能做插入,然後立即更新來解決問題。不要問我爲什麼桌子是這樣設計的 - 就像它之前設置的方式一樣,所以我們現在仍然堅持。我們設置的一個簡單的示意圖如下:插入時實體框架數據庫默認允許更新
DomainClass:
Class1 {
public int id {get;set;}
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int id2 {get;set;}
public string Name {get;set;}
}
SQL(僞):
Table (
id INT which is an identity(1,1) column,
id2 INT NOT NULL with a default value of ident_current("table")
Name nvarchar(50)
)
我們希望通過EF產生的插入語句是:
INSERT INTO Table(Name) VALUES('Name')
並更新爲:
UPDATE table
SET id2 = *somenumber*, name = 'Name'
非常感謝所有的幫助。如果需要,我們使用EF 4.3.1.0。
儘管此鏈接可能會回答問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – bummi 2013-11-05 18:19:41
@bummi:感謝您的評論,我更新了答案,試圖傳達鏈接建議的要點。但請注意,因爲它們僅僅是對框架的建議,所以它們不是答案的一部分(其非常簡單地爲「否」),只是具有潛在興趣的指針。 – tne 2013-11-05 18:27:35