/ / Jedność i wiele kontekstów EF na aplikację - asp.net-mvc, framework-entity, unity-container

Jedność i wiele kontekstów EF na aplikację - asp.net-mvc, framework-entity, unity-container

Obecnie używamy Unity dla naszych Usług Windowsi aplikacje MVC i działa dobrze. Tworzymy kontener ChildContainer dla każdego żądania internetowego i definiujemy zastrzyk DbContext jako hierarquical, więc każde żądanie sieciowe ma własną instancję kontekstu. Posiadamy również klasę BaseDbContext, która zapewnia, że ​​ustawienia EF są spójne we wszystkich naszych kontekstach.

Jak na razie dobrze. Problemem jest teraz dodanie drugiej bazy danych, a zatem drugi kontekst, który również dziedziczy po BaseDbContext.

Nie możemy skonfigurować Unity do wstrzykiwania różnych kontekstów, ponieważ klasa podstawowa jest taka sama.

Rozwiązaniem, które znaleźliśmy, było stworzenie ContextProvider gdzie T: BaseDbContext i zarejestruj to w Unity, abyśmy mogli rozróżnić kontekst według typu.

Jednak nie wydaje się to właściwe, ponieważ Unity powinna być w stanie poradzić sobie z tym scenariuszem.

Jakie są sugerowane podejścia do rozwiązania tego problemu?

Dzięki.

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz dokonać dwóch rejestracji tego samego typu, używając nazwanych rejestracji:

Container
.RegisterType<BaseDbContext>("context1", ...)
.RegisterType<BaseDbContext>("context2", ...)

Oraz w kodzie klienta:

public void MyClass {

public MyClass([Dependency("context1")] BaseDbContext context1,
[Dependency("context2")] BaseDbContext context2) {
....
}
}