在.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数据库中触发,但不想走这条路。)
谢谢!