gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:27:02 27 4
gpt4 key购买 nike

我有 asp.net MVC 应用程序,其中城堡 Windsor 用作 DI 和拦截器。

目前 Dapper 用于 ORM 映射,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 的行为。您应该在范围内只使用一个连接,或者在打开另一个之前关闭第一个连接。

关于asp.net-mvc - 使用 DI 和不使用 EF 实现工作单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com