EF 6回滚和更新最佳方法

时间:2016-01-07 14:48:01

标签: asp.net-web-api entity-framework-6

我有一个有效的解决方案,我正在启动这个主题,讨论最佳方法。

环境:EF6,SQL 2012 情形:

我有Task和TaskDetail表,它通过TaskID具有父子/关系。

创建方法: 在创建任务时,我需要确保在TaskDetail表中进行输入。 第一种方法: 任务表中都有一个条目。保存更改。获取TaskID并将其分配到具有Detail表信息的DTO中。将DTO传递给TaskDetail创建方法。保存更改。提交..如果发生任何错误,请回滚整个事务

第二种方法: 添加Task表的relavent字段。同时添加“任务明细”表的相关字段。通过导航属性将新的详细信息表对象添加到Task表。 Task.Taskdetail.Add(newObj)。最后SaveChanges。

问题1: 这两种方法都产生相同的SQL。虽然不能注意到很多差异但是这样做的最佳方法是什么?

问题2: 另外,如果你看一下我的场景,你会注意到它的SaveAll或SaveNone方法。最初我尝试循环遍历DbEntityEntries,然后回滚更改。但这听起来适用于上面描述的第二种方法而不适用于第一种方法,因为我在插入后进行保存以获取TaskID。最后我最终使用了EF 6中引入的“DbConextTransaction”。但最好的方法是什么?

问题3:

更新方法:

根据我的要求进行更新时,我不会触及任务表。它仅处理TaskDetail表,但需要从UI传递的任务ID。

  • •使用任务ID和活动标志获取现有任务详细信息 (有一对多关系)
  • 将活动标志更新为false
  • 在“任务明细表”中创建新条目

我刚刚将上述语句翻译成代码实现,但处理它的最佳方法是什么????

0 个答案:

没有答案