Linq to sql Linq2Sql不更新更改
我正在使用Linq2Sql更新行数据,但一旦我更改了值 我以前研究过这个问题,发现了以下可能的原因:Linq to sql Linq2Sql不更新更改,linq-to-sql,datacontext,submitchanges,Linq To Sql,Datacontext,Submitchanges,我正在使用Linq2Sql更新行数据,但一旦我更改了值 我以前研究过这个问题,发现了以下可能的原因: 实体未更改,因此未发生更新 实体缺少主键,但未进行更新 在我的情况下,这些都不是问题 我的PK在我的班级和桌子上。 数据上下文的GetChangeSet()指示至少有1个更新 我看到的唯一问题是,从数据上下文日志来看,没有生成update语句 有人知道问题可能是什么吗 以下是代码示例: using(context db=new context()) { db.Log=new System.
- 实体未更改,因此未发生更新
- 实体缺少主键,但未进行更新
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();
}
}
你可以试试这个
if(obj!=null)
{
obj.FirstName=firstName;
obj.LastName=lastName;
db.MyTable.InsertOnSubmit(obj);
db.SubmitChanges();
System.Data.Linq.ChangeSet set = db.GetChangeSet();
}
我发现了问题。对任何感兴趣的人 我预先向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博客帮了我很多…行已经存在,所以当我尝试InsertOnSubmit时,我得到“无法添加已经存在的实体”