Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#DataContext.SubmitChanges()不更新数据库_C#_Linq_Datacontext - Fatal编程技术网

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中的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编程!