我的系统中有订单。用户可以编辑订单并将其保存到数据库。在表单中有一个复选框字段,名为“跟踪订单”,如果选中,则将订单ID添加到TrackedOrders
表中。存储过程或应用程序中的业务逻辑
现在,我的问题是,该解决方案是更好:
要使用
UPDATE
语句中使用单个存储过程(SaveOrder
),它首先更新所有的订单字段和调用另一个SP(AddTrackedOrders
)内部,如果“isTrackedOrder”复选框值= true。或致电
SaveOrder
sp将只更新订单,然后签入应用程序代码if isTrackedOrder=true -> call AddTrackedOrders
。
这两个调用都必须在同一个事务中!意味着如果SaveOrder
成功并且AddTrackedOrders
失败,那么SaveOrder也必须回滚。
我知道有可能在代码中创建事务,但我不确定这种方法的含义是什么。
编辑:
很短的研究,我已经注意到,大多数人更喜欢使用的TransactionScope后。我仍然不确定这是如何更好,因为它使交易时间更长(并且因此更容易出错)并使多次数据库往返运行。此外,如果他们的结果控制业务场景的流程,您可能需要添加更多存储过程...
谢谢大家!
只要有可能,最好不要使用存储过程。 – Dennis
但是,那么我将如何管理代码中的交易? –
无论您使用哪种数据访问机制,从.NET代码管理事务都没有任何困难。 – Dennis