我正在使用Linq2Sql更新行数据,但一旦我更改了值 我之前研究过这个问题,发现了以下可能的原因:
在我的情况下,这些都不是。
我的班级和表格中有我的PK。 数据上下文的GetChangeSet()表示至少有1次更新。
我看到的唯一问题是数据上下文日志中没有生成更新语句。
有谁知道问题可能是什么。
以下是代码示例:
using(context db=new context())
{
db.Log=new System.IO.StreamWriter(sample){AutFlush=true};
MyObject obj=db.MyTable.SingleOrDefault(row=>Email==email);
if(obj!=null)
{
obj.FirstName=firstName;
obj.LastName=lastName;
System.Data.Linq.ChangeSet set=db.GetChangeSet();
db.SubmitChanges();
}
}
答案 0 :(得分:0)
你可以试试这个
if(obj!=null)
{
obj.FirstName=firstName;
obj.LastName=lastName;
db.MyTable.InsertOnSubmit(obj);
db.SubmitChanges();
System.Data.Linq.ChangeSet set = db.GetChangeSet();
}
答案 1 :(得分:0)
我发现了问题。对任何有兴趣的人。
我之前在我的DataContext Clas中添加了验证逻辑。 例如,如果我的表名是“Product”,我将验证添加到部分方法“UpdateProduct”。
但是我忽略了告诉LINQ to SQL继续更改数据库。所以它会验证然后什么都不做因为我没有继续代码。
对于任何需要它的人来说,为了做到这一点,我需要在逻辑传递时调用“ExecuteDynamicUpdate”。
更新解决方案的示例:
partial void UpdateObj(Obj instance)
{
if(instance.Field==null)
{
thow new NotImplementedException();
}
//Added missing code continuation
this.ExecuteDynamicUpdate(instance);
}
ScottGu Blog帮助了我...... http://weblogs.asp.net/scottgu/linq-to-sql-part-4-updating-our-database