加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Ninject – 具有参数/ Entity Framework连接字符

发布时间:2020-12-15 23:39:34 所属栏目:asp.Net 来源:网络整理
导读:请原谅我的无知,但我对IOC和NinJect很新.我已经寻找到高低的易于理解的解决方案,但到目前为止,他们已经逃避了我. 到目前为止,我有以下和所有的工作如预期: private class StandardModule : NinjectModule { public override void Load() { BindILog().ToNLo
请原谅我的无知,但我对IOC和NinJect很新.我已经寻找到高低的易于理解的解决方案,但到目前为止,他们已经逃避了我.

到目前为止,我有以下和所有的工作如预期:

private class StandardModule : NinjectModule
    {
      public override void Load()
      {
        Bind<ILog>().To<NLogLogger>();    // Use NLog
        Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>();
      }
    }

MyEntityFrameWorkRepository然后通过app / web.config中声明的连接字符串创建自己的EF DbContext:

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专家的一些反馈意见,因为我确信任何“模式”在其他情况下都是非常有用的.

解决方法

您可以使用.WithConstructorArgument()方法来指定构造函数参数.第一个参数应该是构造函数参数的名称.
public class StandardModule : NinjectModule
{
    public override void Load()
    {
        string connectionString = "...";
        Bind<IMyEntityFrameWorkRepository().To<MyEntityFrameWorkRepository>()
            .WithConstructorArgument("sqlConnectionString",connectionString);
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读