2011-12-19 51 views
0

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

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绑定。任何人对此事有什么好的投入?

回答

0

您真的需要使用ConfigurationManager.ConnectionStrings["dEntities"].ConnectionString;吗?因为据我所知ConfigurationManager非常只是留在向后兼容性*

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

+0

嗯林不知道的设置,所以可能不需要它。虽然你在我尝试这种方式时建议的方式,我没有得到有关属性的建议。 Settings.Default.dEntities?你确定它在这个名字空间吗? – Tim 2011-12-19 13:54:56

+0

它应该。我也使用MVC3。 (不是与Ninject,而是与城堡windsor,但这不应该是相关的),这里是我的设置:http://i.imgur.com/smXq6.png,在这里代码:http://i.imgur。 com/Myakz.png,就像ConfigurationManager – 2011-12-19 14:08:00

+0

一样嗯,以及我没有得到任何建议。这个我应该在NinjectMvc3类的RegisterServices方法中完成?谢谢。 – Tim 2011-12-19 14:26:56

0

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

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

+0

嗯可以。现在它在此行的NinjectMvc3类的Start()方法中崩溃:bootstrapper.Initialize(CreateKernel);但我会尝试谷歌你的建议,看看是否有其他人也经历过相同的。谢谢! – Tim 2011-12-20 13:47:21

+0

在这里发现了一个关于此的线程http://stackoverflow.com/questions/5910376/ninject-mvc3-bootstrapper-throwing-already-initialized-exception我正在使用Nuget包也许这是问题? – Tim 2011-12-20 13:56:49