加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 使用DI和不使用EF实现工作单元

发布时间:2020-12-16 09:37:54 所属栏目:asp.Net 来源:网络整理
导读:我有asp.net MVC应用程序,城堡windsor作为DI和拦截器工作. 目前Dapper用于ORM mappring,Dapper是实体映射提供程序的简单对象,它与ADO .Net连接,公共对象一起工作. 我们已经有了存储库和业务服务层,现在我想实现工作单元. 我知道EF具有自动事务功能,而SaveCha
我有asp.net MVC应用程序,城堡windsor作为DI和拦截器工作.

目前Dapper用于ORM mappring,Dapper是实体映射提供程序的简单对象,它与ADO .Net连接,公共对象一起工作.

我们已经有了存储库和业务服务层,现在我想实现工作单元.

我知道EF具有自动事务功能,而SaveChanges()使所有实体更改持久化.

有没有办法让非EF,多层应用的工作单位?

解决方法

我想你正在寻找某种AOP.
看看这个例子 http://www.sharpcrafters.com/solutions/transaction.
您可以使用该属性使用事务包装您的方法,甚至可以更好地声明它将用于BAL中的所有方法,如下所示:

[assembly: TransactionScope( AttributeTargetTypes = "MyBALNamespace.*",AttributeTargetTypeAttributes = MulticastAttributes.Public,AttributeTargetMemberAttributes = MulticastAttributes.Public )]

如上所述:http://www.sharpcrafters.com/solutions/logging

更新

当您使用TransactionScope时,尽量避免不必要的事务升级到MSDTC.如果您在TransactionScope期间打开了两个连接(甚至是同一个数据库),它将立即升级到DTC,这会对性能产生影响(有时它可能导致范围配置上出现意外的异常) – 这是SQLServer2008的行为.在范围内,您应该只使用一个连接,然后在打开另一个之前关闭第一个连接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读