使用亚音速2.1(存储库模式)时如何实现单位工程模式?
-
04-10-2019 - |
题
我正在使用ASP.NET MVC应用程序的亚音库模式(2.1)。在我的应用程序中,有许多存储库,例如类别repository,blogrepository等。 DB.Select().From()...ExecuteReader()
然后从这些读者加载域对象。
在控制器操作中,我从这些存储库中拨打了多个电话
List<IBlog> blogs=_blogRepository.GetHottestBlogs();
List<ICategory> categories=_categoryRepository.GetAll();
我是否必须为此实现任何单位工程模式?我的怀疑是亚音音如何执行每个操作db.update/insert/select .IS a TransactionScope
足以批量更新,或者我必须使用 SharedDbConnectionScope
为了获得更好的性能?
解决方案
使用亚音速,您必须组合TransactionsCope和sharedDbConnectionsCope。否则,每个命令都会使用其自己的专用连接,该连接在执行后处理,这将导致隐式提交(至少对于MySQL和SQL Server,我认为)。
共享DBConnectionsCope中的每个亚音速查询都将共享相同的连接,因此您可以使用Transaccioscope。
而且,您必须在TransactionsCope之前使用sharedDbConnectionsCope,否则某些提供商将无法检测到您正在执行事务。
using (new SharedDbConnectionScope())
{
using (TransactionScope ts = new TransactionScope()
{
// Do some sh*i ;)
ts.Complete();
}
}
不隶属于 StackOverflow