加载,更新和保存,或直接执行Insert / Update sql命令?

时间:2017-03-06 14:32:52

标签: c# sql sql-server entity-framework

当用户想要取消支票时,我发现了这个过程。

每个支票包含多个PayableCheck记录和多个错误记录

Check.CheckID = PayableCheck.CheckID
Check.CheckID = Error.CheckID

每个PayableCheck与1个应付记录匹配。

PayableCheck.PayableID = Payable.PayableID

每个应付款项对应一个收据或错误

Error.PayableID = Payable.PayableID
Receipt.PayableID = Payable.PayableID

当用户无效检查(给出支票ID#)时,我需要:

  1. 将检查状态设置为V
  2. 使用原始支票的金额
  3. 创建另一个支票
  4. 为与原始检查相关联的每个错误创建另一个错误,每个错误具有负数
  5. 为与原始Check
  6. 相关联的每个PayableCheck设置Active字段为0
  7. 将每个链接的应付款设置为状态O
  8. 将每个链接的错误设置为状态O,并将每个链接的收据设置为状态O
  9. 我最好在使用Entity Framework加载所有内容并在C#中进行更改然后保存,还是使用sql更新和插入更好的方法?

2 个答案:

答案 0 :(得分:2)

最好在sql server中创建一个存储过程,然后编写所有可以实现此目的的sql&#s。

答案 1 :(得分:1)

鉴于您要更改的内容,“简单路线”是使用EF将数据加载到上下文中,进行更改然后调用保存更改。

这应该会产生相当不错的SQL,但是如果您对实体的大小或要加载的数据量有所顾虑,那么效率会很高,那么更好的方法是直接在SQL中处理它并编写存储过程的脚本,你当然可以从EF那里打电话。