Итак, новое сообщение об исключении, которое я получил после включения режима отладки через container.EnableDebugDiagnostic();
, заставило меня задуматься ... Оно говорит, что я должен сконфигурировать контейнер для предоставления строкового значения для конструктора, что, я уверен, я и сделал. Так что это подразумевает, что на самом деле это даже не рассматривает возможность использования моей регистрации. При отладке регистрации контейнеров я обнаружил, что моя регистрация была там, и это тоже не могло быть проблемой.
Затем я понял, что Unity регистрирует все типы по умолчанию, поэтому он пытается создать экземпляр AuthenticationContext
и, следовательно, это не удалось, потому что, когда он использует неявную регистрацию, он не знает, что делать с обязательным строковым параметром.
Ошибка в DbContextFactory
, и это исправило ее:
public IDbContext CreateDbContext<TDbContext>() where TDbContext : IDbContext
{
var key = typeof(TDbContext).ToString();
// This is wrong because it is trying to resolve AuthenticationContext for a given name.
// But it should resolve a registration for IDbContext for that name since that is
// how it was registered!
// return container.Resolve<TDbContext>(key);
return container.Resolve<IDbContext>(key);
}