在.NET 4.0和Linq to SQL中,我嘗試使用分部類從更新方法(現有的DBML方法)中「觸發」更改。爲簡單起見,假設同列Id和價值當擴展Linq部分方法時,SQL Server超時異常
自動根DBML包含方法OnValueChanged一個桌上的東西,我會延長該和作爲一個練習嘗試在另一個行改變一個值:
public partial class Things
{
partial void OnValueChanged()
{
MyAppDataContext dc = new MyAppDataContext();
var q = from o in dc.GetTable<Things>() where o.Id == 13 select o;
foreach (Things o in q)
{
o.Value = "1"; // try to change some other row
}
try
{
dc.SubmitChanges();
}
catch (Exception)
{
// SQL timeout occurs
}
}
}
發生SQL超時錯誤。我懷疑datacontext在當前OnValueChanged()方法已經處理它的datacontext之前嘗試SubmitChanges()變得困惑,但我不確定。
大多數情況下,我找不到在現有的DBML生成的方法中針對數據庫觸發更新的良好模式的示例。
任何人都可以提供任何指示爲什麼這不起作用,以及我如何能夠完成某些工作正常嗎? (我意識到我可以在SQL數據庫中觸發,但不想走這條路。)
謝謝!