Linq2Sql不更新更改

时间:2014-07-31 17:22:10

标签: linq-to-sql datacontext submitchanges

我正在使用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();
 }
}

2 个答案:

答案 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