Что у меня сейчас есть:
У меня есть простой словарь типа string, DbContext
Я регистрирую свой словарь вот так
container.Register<IDictionary<string, DbContext>>(x => dbContexts).ReusedWithin(ReuseScope.Request);
и снова использую словарь, просто вставляя его в мои конструкторы. Поэтому я всегда вставляю весь словарь с каждым DbContext в нем. Позже я получаю правильный DbContext с помощью идентификатора, хранящегося в моей учетной записи пользователя. Таким образом, использование DbContext выглядит следующим образом:
private readonly IDictionary<string, DbContext> _dbContexts;
public FooService(IDictionary<string, DbContext> dbContexts)
{
_dbContexts = dbContexts;
}
public void Bar()
{
var userSession = GetSession();
var data = _dbContexts[userSession.TargetConnectionIdentifier].Table.ToList();
}
Что я хочу
Я хочу добавить только один DbContext в мои классы. Использование того же свойства из моего сеанса в качестве идентификатора. Я видел, что Funq предлагает методы для регистрации экземпляров с именем (например, RegisterAs<>()
). Но я не совсем уверен, как правильно их использовать.
private readonly DbContext _dbContext;
public FooService(DbContext dbContext)
{
_dbContext = dbContext;
}
Я хочу, чтобы Funq автоматически разрешал нужный мне объект, в зависимости от того, какое значение имеет конкретное свойство из моего сеанса.
Если кто-нибудь знает ответ, я был бы очень признателен.