Несколько DBContexts с UnitOfWork и репозиториями? - PullRequest
0 голосов
/ 30 августа 2011

Как я могу создать несколько dbcontexts и как указать это в хранилище для использования?

Мой текущий пример основан на MyFinance, приложении codeplex , так что это означает, что вы должны иметь возможность просматривать источник здесь . Кто-нибудь есть идея, я думаю, что я должен изменить UnitOfWork, RepositoryBase, IDatabaseFactory, ... но я не уверен, как или с чем.

Заранее спасибо

Больше информации, чем указано выше ^^

Следующая ситуация выглядит следующим образом, потому что у нас безумно большое «инкрементное» количество данных, у нас будет один главный dbcontext (MyMasterContext), содержащий только пользователей, их роли и информацию, а также другие детали.

Далее, у нас изначально будет 1 сервер, но мы подозреваем, что это изменится в течение следующих 4-6 месяцев, поэтому у нас есть следующий dbContext с именем: MySlaveContext.

Кроме того, ради скорости, у нас есть еще один сервер, который возвращает только JSON Requests (MyAjaxContext), например, давая следующие 10 городов с текущим почтовым индексом, и многие другие функции «автозаполнения».

Как вы имеете в виду, я не должен использовать unitOfWork? Обновление объекта в Asp.Net MVC использует шаблон UnitOfWork, не так ли? (UpdateModel (объект) и saveChanges).

Я посмотрю в TransactionScope, но я бы хотел использовать UnitOfWork, если это возможно. А у вас есть примеры или что-то, как мне решить мою текущую проблему?

Ответы [ 2 ]

0 голосов
/ 30 августа 2011

Я бы посоветовал вам проверить NCommon.Он обеспечивает реализацию для таких шаблонов, как хранилище, единица работы и шаблон спецификации.Он также поддерживает несколько контекстов и несколько единиц работы.

Вы можете найти больше документации здесь:

http://riteshrao.github.com/ncommon/index.html

Документация, кажется, уже сделана.Надеемся, что это будет исправлено.

Находите старую запись в блоге автора об NCommon и поддержке нескольких баз данных здесь:

http://codeinsanity.com/archive/2010/04/05/unit-of-work-implementation-in-ncommon-1-1.aspx

0 голосов
/ 30 августа 2011

В этом проекте нет единицы выполнения работы (кроме контекста EF4) или IDatabaseFactory.

Я бы использовал TransactionScope вместо реализации единицы работы и просто ссылался на правильный (в конструкторе) EF4 DbContext в каждой реализации репозитория.

Обновление в ответе на комментарий

Я не вижу никакой выгоды в использовании универсальных репозиториев или реализации единицы работы, если вы работаете только с базами данных.

Создайте репозитории, которые имеют то, что вам нужно, не более или менее (с соответствующим интерфейсом, на который вы ссылаетесь). Для ваших реализаций репозитория совершенно нормально воспринимать EF DbContext.

Используйте TransactionScope, если вам нужна поддержка транзакций.

...