Прошу простить меня за невежество, но я новичок в IOC и NinJect. Я искал простые и понятные решения по разным причинам, но до сих пор они ускользали от меня.
Пока у меня есть следующее, и все работает, как ожидалось:
private class StandardModule : NinjectModule
{
public override void Load()
{
Bind<ILog>().To<NLogLogger>(); // Use NLog
Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>();
}
}
MyEntityFrameWorkRepository затем создает свой собственный EF DbContext через строку подключения, объявленную в app / web.config:
public class MyDbContext : DbContext
{
public MyDbContext() : base("MyAppConfig")
{
}
........
}
ОДНАКО !! Моя цель примерно такая - я понимаю, что этот синтаксис - "ерунда" (и я думаю , что мне, возможно, тоже придется использовать IOC MyDbConext), но я надеюсь, что "псевдокод" передает мое желание:
private class StandardModule : NinjectModule
{
public override void Load()
{
Bind<ILog>().To<NLogLogger>(); // Use NLog
string mySqlConnectionString = MyApp.GetCommandLineArgument("sqlconn"); // "Data Source=..."
Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>(mySqlConnectionString);
}
}
.................
public class MyDbContext : DbContext
{
public MyDbContext( string sqlConnectionString) :
base(sqlConnectionString) // will accept a standard SQL connection string
{
}
........
}
Я был бы искренне признателен за отзывы экспертов IOC / NinJect, поскольку я уверен, что любой «шаблон» может быть очень полезен в других сценариях.