Попробуйте:
static void Main(string[] args)
{
var build = new ContainerBuilder();
build.Register<EmployeeDetail>().As<IEmployeeDetail>().InstancePerDepenency();
build.Register<Employee>().AsSelf().InstancePerDependency();
var container = build.Build();
Employee employee = container.Resolve<Employee>();
Console.WriteLine(employee.GetName());
Console.ReadLine();
}
Объяснение:
Необходимо зарегистрировать не только типы, которые являются зависимостями, но и типы, которые используют эти зависимости. В основном все, что вы хотите решить.
Я использую SET CONTEXT_INFO для этого. Это, в чем Вы нуждаетесь.
Это, конечно, походит на выполнимое решение, хотя необходимо будет ввести имя пользователя в строку подключения каждый раз загрузки приложения. Обратите внимание, что это решение, вероятно, не работало бы с веб-приложением, поскольку Ваша строка подключения будет отличаться каждый раз, который мог привести к огромным проблемам организации пула подключений.
Другая опция состоит в том, чтобы получить ИМЯ ХОСТА/IP-АДРЕС (ВЫБЕРИТЕ host_name ()), и хранилище это вместо этого.
Вам не обязательно был бы нужен новый параметр на каждой хранимой процедуре, поскольку можно изменить каждую хранимую процедуру (или триггер) для автоматической вставки App_Name/Hostname.
Потенциальный недостаток состоит в том, что любые модификации, выполненные через Studio управления, не будут иметь пользовательского App_Name, и Вас оставят с "Studio управления Microsoft" как пользователь.
Мы используем свойство Application Name для управления триггерами аудита и не видели, что любые проблемы используют его и не заметили проблем скорости (хотя в нашем случае, мы конкретно не контролируем для определенных приложений, таким образом, его твердое для измерения, сколько берет время, не делающее что-то :))