我正在使用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();
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top