0

我第一次安装了 Ninject。我正在使用 NinjectMvc3 版本,它通过 Nuget 在 App_Start 文件夹中为您提供 NinjectMvc3 类。在 RegisterServices方法中,我试图连接我在 web.config 中的实体连接字符串。基本上我现在拥有的就是这个。

var sConnection = ConfigurationManager.ConnectionStrings["dEntities"].ConnectionString;
        kernel.Bind<IDataContext>().To<DataContext>().WithConstructorArgument("dEntities", new dEntities(sConnection));

这给了我以下错误异常详细信息: System.InvalidOperationException:在应用程序的预启动初始化阶段无法调用此方法。

这是一些源错误:

/// Initialize a new dEntities object.
     /// </summary>
     public dEntities(string connectionString) : base(connectionString, "dEntities")
     {
         this.ContextOptions.LazyLoadingEnabled = true;

我究竟做错了什么?

编辑:我可以补充一点,我正在使用实体框架和存储库模式。我希望做的是以某种方式在 web.config 中创建实体连接字符串的实例并将其与 NinjectMvc3 绑定。有人对此事有什么好的意见吗?

4

2 回答 2

0

你真的需要使用ConfigurationManager.ConnectionStrings["dEntities"].ConnectionString;吗?因为 afaikConfigurationManager几乎只是为了向后兼容而保留*

你可以尝试使用var connection = Properties.Settings.Default.dEntities

于 2011-12-19T13:47:20.730 回答
0

如果我记得很清楚,NinjectMVC3 具有 WebActivator 依赖项。也许这就是问题所在。

不要在 NinjectMV3 提供的类中执行此操作,而是尝试在 global.asax App_Start 事件处理程序中执行此操作。

于 2011-12-20T12:24:50.603 回答