c#DataContext.SubmitChanges()不更新数据库
有人能解释一下为什么下面的代码无法更新数据库,或者我还能做些什么来排除故障吗c#DataContext.SubmitChanges()不更新数据库,c#,linq,datacontext,C#,Linq,Datacontext,有人能解释一下为什么下面的代码无法更新数据库,或者我还能做些什么来排除故障吗 // ********************************* // People Updates // ********************************* // In Engr and SoE EmplIDs = InputList.GetPeopleIds(InputType.Engr | InputType.SoE); // retrieve IDs in tables En
// *********************************
// People Updates
// *********************************
// In Engr and SoE
EmplIDs = InputList.GetPeopleIds(InputType.Engr | InputType.SoE); // retrieve IDs in tables Engr and SoE
Engr = DB.GetEngrByIds(EmplIDs); // retrieve objects from Engr
SoE = DB.GetSoEByIds(EmplIDs); // retrieve objects from SoE
Batch.Update(SoE, Engr); // update SoE with Engr data
DB.Save(SoE); // persist
// Inside DB repository
public void Save(List<SoE_People> people) {
ChangeSet cs = dc.GetChangeSet();
foreach (SoE_People person in people.Where(p => cs.Updates.Contains(p))) {
person.LastUpdate = DateTime.Now;
}
dc.SubmitChanges();
}
//*********************************
//人物更新
// *********************************
//工程师和国有企业
EmplIDs=InputList.GetPeopleId(InputType.Engr | InputType.SoE);//检索表Engr和SoE中的ID
工程师=DB.GetEngrByIds(EmplIDs);//从工程师处检索对象
SoE=DB.GetSoEByIds(EmplIDs);//从SoE检索对象
批处理更新(SoE,工程师);//使用工程师数据更新SoE
DB.Save(SoE);//坚持
//数据库存储库内部
公共作废保存(列出人员){
ChangeSet cs=dc.GetChangeSet();
foreach(SoE_People-person-in-People.Where(p=>cs.Updates.Contains(p))){
person.LastUpdate=DateTime.Now;
}
dc.提交更改();
}
我已经检查了以下内容:
- 人。数到2500,cs。更新。数到200
- dc.GetChangeSet.Updates.Count=0调用SubmitChanges()后
- 对人员对象的所有更新都是正确的。他们可以通过人员和cs.Updates[x]在“本地人”窗口中看到
- dc.SubmitChanges()不会引发异常
- 设置dc.Log=Console.Out不会显示SubmitChanges()的SQL
- 代码的前一部分通过dc.InsertAllOnSubmit()插入新记录,工作正常->无写权限问题
- 手动将数据剪切和粘贴到SoE_People表工作->无外键约束问题
- 把每件事都考虑进去。你怎么知道没有异常被抛出
- SaveChanges()返回整数-被破坏的记录数。捕获返回值并进行检查
- 把每件事都考虑进去。你怎么知道没有异常被抛出
- SaveChanges()返回整数-被破坏的记录数。捕获返回值并进行检查
.您可能已经覆盖了datacontext中的SoE_人员更新。 应该有一个this.ExecuteDynamicUpdate(实例) 看那里,也许你已经评论/删除了 如果你不明白我的意思,你可以看看这里:
.我不熟悉DataContext(不要使用它),但我会把它扔出去
如果它类似于SqlDataAdapter,您是否编写/定义了用于插入或更新记录的SQL文本?我不熟悉DataContext(不要使用它),但我会把它扔到一边
如果它类似于SqlDataAdapter,您是否编写/定义了用于插入或更新记录的SQL文本?可能不是代码,而是数据库表。 我遇到了更新使用SubmitChanges()的表的问题。
我通过给表一个主键解决了这个问题,可能不是代码,而是数据库表。 我遇到了更新使用SubmitChanges()的表的问题。
我通过给表一个主键解决了这个问题-一个未捕获的异常应该会停止代码,-对象浏览器显示dc.SubmitChanges()返回void,但我会研究一下-谢谢。SubmitChanges()肯定会返回一个
void
哦,对不起。。我正在考虑SaveChanges()-一个未捕获的异常应该会停止代码,-对象浏览器显示dc.SubmitChanges()返回void,但我将对此进行研究-谢谢。SubmitChanges()肯定会返回一个void
哦,对不起。。我在考虑SaveChanges()-这是一个很好的观点。在部署代码之后,我添加了一些日志记录,这些日志记录覆盖了一些OnPropChanging()事件。这也可以解释为什么我没有从dc.Log中看到任何SQL。我在你的帖子后评论了这些,但是没有用。我应该能够进入这些,看看它们是否捕获了我的更改吗?我确实为我的表定义了接口(即公共部分类SoE_People:IPerson{}
,但我无法想象这会造成干扰。这是一个好的观点。部署代码后,我添加了一些日志,覆盖了一些OnPropChanging()事件。这也可以解释为什么我在dc.Log中看不到任何SQL。我在你的帖子后注释了这些事件,但没有用。我应该能够进入这些事件并查看它们是否捕获了我的更改吗?我确实为我的表定义了接口(即,公共部分类SoE_People:IPerson{}
但我无法想象这会造成干扰。DataContext的优点之一是您不必编写sql:-)一旦我的公司离开这台旧的sql 2000服务器,我真的需要学习一些Linq编程!DataContext的优点之一是您不必编写sql:-)一旦我的公司离开这个旧的SQL 2000服务器,我真的需要学习一些Linq编程!