Как реализовать UnitOfwwork Pattern при использовании дозвуковой 2.1 (шаблон репозитория)?

StackOverflow https://stackoverflow.com/questions/2887079

Вопрос

Я использую Disconus Repository Pattern (2.1) для ASP.NET MVC Application. В моем заявлении есть множество репозиториев, таких как ChateRepository, Blogrepository и т. Д., Каждый из этого хранилища, которого я звоню дозвуковым DB.Select().From()...ExecuteReader() а затем загружать доменные объекты из тех читателей.

В действии контроллера я делаю несколько звонков из этих репозиториев, например,

List<IBlog> blogs=_blogRepository.GetHottestBlogs();

List<ICategory> categories=_categoryRepository.GetAll();

Должен ли я реализовать любую узор UnitOfwork для этого? .my сомнений в том, что насколько подгруппированы каждая операция db.update / insert / select .is a TransactionScope достаточно для обновления партии или я должен использовать SharedDbConnectionScope Чтобы получить лучшую производительность?

Это было полезно?

Решение

С дозвуковой вы должны объединить Skrescone и SharedDBConnectionsCope. В противном случае каждая команда будет использовать собственную выделенное соединение, которое расположено после выполнения, что приведет к неявному фирму (по крайней мере для MySQL и SQL Server, я думаю).

Каждый дозвуковой запрос в рамках SharedDBConnnectionsCope будет поделиться тем же соединением, поэтому вы можете использовать транзактиоскоп.

И вы должны использовать SharedDBConnnectionscope перед транзарами, в противном случае некоторые провайдеры не обнаружит, что вы выполняете транзакцию.

using (new SharedDbConnectionScope())
{
    using (TransactionScope ts = new TransactionScope()
    {

        // Do some sh*i ;)
        ts.Complete();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top