[英]Using Linq to Sql, does not update, but does not throw exception
運行.net 2008,asp.net,Linq to sql,sql server 2008 express
Foo f = db.Foo.First(x => x.ID == id);
f.IsValid = true;
db.SubmitChanges();
我有一個非常基本的表,它有幾個字段,沒有FK約束。 當我調用.SubmitChanges()時,沒有數據保存,但沒有拋出任何錯誤。 有任何想法嗎?
不使用任何顯式事務范圍,字段不會自動生成,並且服務器上沒有觸發器。
拋開Tyop,首先要嘗試設置db.Log = Console.Out;
查看是否有任何TSQL問題(或更好:運行SQL跟蹤)。 如果沒有發送任何東西,那么IsValid
可能已經是真的 - 它不會重新保存這些更改,除非必須( 除非你強制它 )。
不太可能,您可能不小心關閉了對象跟蹤( db.ObjectTrackingEnabled
)。
其他常見錯誤包括:
Complete()
使用時TransactionScope
(如果你使用 TransactionScope
) 我還假設 IsValid
實際上是一個db-mapping屬性(它們不一定是)
您需要在f
上設置IsValid
而不在x
。
Foo f = db.Foo.First(x => x.ID == id);
f.IsValid = true;
db.SubmitChanges();
如果您使用的話,請記得在TransactionScope
上調用Complete
。
IsValid是否在設計器中標記為AutoGenerated字段? 如果是這樣,您所做的任何更改都不會傳播回服務器。 此外,您是否有可能在更新時運行的數據庫觸發器,而不是插入,即將其設置為默認值0(false)?
事實證明,自從我上次使用此應用程序以來,主鍵已從數據庫中刪除。 當我最近重新生成.dbml時,它生成時沒有主鍵。 將其添加回來已經解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.