2013-04-29 38 views
0

是否可以使用存根實體在EF中將字段設置爲空?在EF 4.1中是否可以使用存根實體將字段設置爲空?

我希望我的代碼,像這樣的工作:

MyEntity myEntity = new MyEntity() { ID = detached.ID }; 
ctx.MyEntities.Attach(myEntity); 
// The value in the table is non null, the value in detached is null. 
myEntity.myNullableField = detached.myNullableField; 
ctx.SaveChanges(); 

什麼我目前看到的是,如果我設置一個字段中myEntity所存根對象EF檢測爲沒有變化爲null,並且不更新數據庫中的那一列。有沒有辦法強制EF檢測null作爲更改,以便將它保存到數據庫中?

回答

3

您正在設置一個爲空的字段(因爲您剛剛創建了一個全新的空白實體),然後爲其指定了空值,因此沒有更改。

,如果你做了以下修改可以標記屬性:

ctx.Entry(myEntity).Property(e => e.myNullableField).IsModified = true; 

感覺就像一個黑客攻擊的一位不幸的是,雖然。

+0

我的理解是,存根的全部要點是允許您在每次寫入之前跳過數據庫的讀取。 – grieve 2013-04-29 16:30:00

+0

對不起,誤會了。更新了答案。 – samjudson 2013-04-29 20:54:22

+0

最終與:'ctx.ObjectStateManager.GetObjectStateEntry(myEntity).SetModifiedProperty(propertyName);'但相同的一般想法。謝謝您的幫助。 – grieve 2013-04-29 21:35:22

相關問題