Динамическая ConnectionString для MySlaveContext в Asp.Net MVC 3 с использованием репозиториев и Unity - PullRequest
0 голосов
/ 14 сентября 2011

Моя структура базы данных (домен, данные и услуги) такая же, как: Это приложение (MyFinance на CodePlex)

Проблема в том, что у меня есть 2 контекста базы данных (1MyMasterContext) и 1 MySlaveContext.

И предположим, что MySlaveContext всегда может быть другой базой данных / имя_поставщика / сервером.(Я знаю, что Entity Framework поддерживает только MS SQL Server в EF 4.1). MyMasterContext ВСЕГДА остается тем же, именно здесь сохраняются все пользовательские строки подключения.

Таким образом, моя строка подключения всегда может измениться, когда я обращаюсь к MySlaveContext, в зависимости отна котором пользователь вошел в систему.

В текущей ситуации MyMasterContext всегда генерируется автоматически при его использовании, как и MySlaveContext.

Теперь мне нужно добавить поддержку "динамического соединения", единственная проблема в том, что я не знаю, где добавить эту функцию ...

Я уже реализовал ConnectionString в своем UserIdentity (UserData), поэтому он всегда доступен при выполнении:

 DirectCast(User.Identity,MyCustomUserIdentity).ConnectionString

То же самое с ProviderName.

Кроме того, мои DataBaseFactory и UnitOfWork "дублированы", потому что у меня есть один для ведущего и один для ведомого (просто чтобы быть уверенным).

Может кто-нибудь помочь мне, как добавить поддержку "ConnectionString-обнаружения"?

Я думал, что мог бы добавить этокак PropertyInjection или ParameterInjection в Unity, но у меня нет достаточного опыта в этой области, чтобы знать, что это правильно или как это сделать:)

Заранее спасибо всем, кто мог бы привести меня на правильный путь:)

1 Ответ

0 голосов
/ 15 сентября 2011

Исправил это сам с помощью InjuctionConstructor ..

В global.asax

 GetUnityContainer.RegisterType(GetType(ISlaveConnectionString), GetType(SlaveConnectionString), New HttpContextLifetimeManager(Of ISlaveConnectionString), New InjectionConstructor(IIf(HttpContext.Current.User IsNot Nothing, DirectCast(HttpContext.Current.User, UserIdentity).ConnectionString, "")))

Это параметр, который может быть предоставлен методу. В этом случае я обновляю свою ConnectionString.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...