加载、更新和保存,还是直接执行插入/更新 SQL 命令?

3

当用户想要作废支票时,会触发以下流程。

每个支票包含多个应付支票记录和多个错误记录。

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

每个 PayableCheck 对应一个 Payable 记录。
PayableCheck.PayableID = Payable.PayableID

每个应付款对应一个收据或错误。
Error.PayableID = Payable.PayableID
Receipt.PayableID = Payable.PayableID

当用户作废支票(给定支票ID#)时,我需要:
  1. 将支票状态设置为V
  2. 创建另一张支票,其金额为原始支票金额的相反数
  3. 为与原始支票相关联的每个错误创建另一个错误,每个错误都具有负金额
  4. 对于与原始支票链接的每个应付支票,将Active字段设置为0
  5. 将每个链接的应付款项设置为状态O
  6. 将每个链接的错误和收据设置为状态O
我是不是最好使用实体框架加载所有内容,然后在C#中进行更改,然后保存,还是使用仅使用SQL更新和插入的更好方法?

1
我认为如果您在问效率方面是否有差异,那么答案是否定的。如果您已经开始使用实体框架,为了保持一致性,应该继续使用下去。如果您发现在EF中使用它太过复杂,您可以创建存储过程。这样,您以后可以进行更改而无需重新编译代码。这只是我的个人意见。 - justiceorjustus
我正在使用EF。我只是想知道哪种方式更容易编写和维护。 - Tony Peterson
2个回答

2
最好在SQL Server中创建一个存储过程,并编写所有应该实现目的的SQL语句。

1

考虑到你要更改的内容,"简单路线" 是将数据加载到 EF 上下文中,进行更改,然后调用 save changes。

这应该会产生相当不错的 SQL,但如果你担心实体的大小或要加载的数据量,则更好的方法是直接在 SQL 中处理并编写存储过程脚本,当然你仍然可以从 EF 调用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接