t3c*_*b0t 2 c# t-sql transactions dapper
我刚刚开始使用Dapper,我想知道哪种交易模式会更好.
当我编写SQL时,我更喜欢使用脚本中已有的事务:
BEGIN TRAN
-- insert, update etc.
COMMIT
Run Code Online (Sandbox Code Playgroud)
因为它更容易测试它,但也有问题交易与dapper dot net 使用.net事务,所以现在我不确定我应该使用哪一个.
这两种方法都有不同的优势吗?
实际上,这与Dapper无关.请参阅此答案.
TransactionScope或" connection.BeginTransaction或存储过程中的交易"决定不在Dapper的范围内.Dapper只是在DBConnectionADO.NET的对象上公开了一些扩展方法,它们将查询的输出映射到对象.休息取决于你.
TransactionScope通常用于分布式交易; 跨越不同数据库的事务可能在不同的系统上.这需要在操作系统和SQL Server上进行一些配置,否则这将无法正常工作.如果所有查询都针对单个数据库实例,则不建议这样做.
正如@ImrePühvel在评论中指出:对于单个数据库,当您需要在不受您控制的事务中包含代码时,这可能很有用.对于单个数据库,它也不需要特殊配置.
connection.BeginTransaction是针对单个数据库实现事务(在C#,VB.NET等中)的ADO.NET语法.这不适用于多个数据库.
"存储过程中的事务"是针对存储过程中的单个数据库实现的,而不是在应用程序代码中执行此操作.
嵌套交易或上述类型的组合是另一个讨论主题; 尝试搜索网络.
我个人的意见是使用UnitOfWork以更好的方式处理交易.我已经在上面的链接中提到了细节.它在connection.BeginTransaction内部使用.
| 归档时间: |
|
| 查看次数: |
3356 次 |
| 最近记录: |