Решение исходного вопроса
Для Unity необходим уникальный тип, а также интерфейс.Я все еще не уверен, почему инжектор конструктора не справился с этим.Это работает:
// where IMetaRepository<T> and MetaRepository<T> both are derived place holders
container.RegisterType(typeof(IMetaRepository<>), typeof(MetaRepository<>), new TransientLifetimeManager());
К сожалению, это создает ситуацию, когда потребляющие классы должны знать, откуда поступают их данные, что меня не устраивало.
ЛучшеДизайн
Я хотел оставить свои dbmls сгенерированными (так что это исключило возможность привязки моих моделей к определенному интерфейсу), поэтому я просто бросил их в разные подпапки, в результате чего дизайнер сгенерировал другое пространство имендля каждой базы данных.
Затем, в своей реализации репозитория, я сделал следующее:
public Repository(IConnections connections)
{
T type = new T();
var ns = type.GetType().Namespace;
if (ns == "Project.Common.DAL.History")
{
_dataContext = new DataContext(connections.HistoryConnectionString);
}
else if (ns == "Project.Common.DAL.Transaction")
{
_dataContext = new DataContext(connections.TransactionConnectionString);
}
else
{
_dataContext = new DataContext(connections.MetaConnectionString);
}
}
Я думаю, что одним из шагов после этого было бы создание собственного распознавателя типов для единицы, чтобы проверитьпространство имен для меня и вернемся к внедрению контекста данных (это будет необходимо до того, как единица работы может быть реализована).Я пока не собираюсь отмечать это как ответ, если у кого-то есть лучшее решение.