从dbContext的DataAccess库项目中的app.config读取连接字符串

时间:2014-11-09 03:55:22

标签: connection-string app-config data-access

我正在开发一个VS2012解决方案,它有一个ASP.NET MVC 4.0项目和多个类库,比如我的Managers,provider和DataAccess项目。我的dbContext类是在DataAccess项目中定义的。

我的目标是限制DataAccess项目的App.Config文件中的连接字符串信息。我试图避免在项目中的任何其他地方指定connectionString,因为它是我的DataAccess类,它将与DB交互。

现在如果我通过硬编码指定我的连接字符串我的dbContext类,我的项目工作正常,并且能够从数据库中读取数据。


    public MyDbContext()
        : base(@"Data Source=MYLAPTOP\SQL2012MAIN;Initial Catalog=MyDB;User ID=sa;Password=*****")
    {

    }

但是,如果我在app.config文件中指定连接字符串,如下所示:

<connectionStrings>
<add name="MyDBConnection" connectionString="Data Source=MYLAPTOP\SQL2012MAIN;Initial Catalog=MyDB;User ID=sa;Password=*****;Connect Timeout=200; pooling='true" providerName="System.Data.SqlClient" />
</connectionStrings>

并在我的dbContext类中使用它,如下所示:

public MyDbContext()
            : base("MyDBConnection")
        {

        }

它不起作用。我尝试在我的MVC项目的web.config文件中使用相同的连接字符串,但后来我又得到了相同的错误(附图):

enter image description here

有人可以指导我......

谢谢Hari

2 个答案:

答案 0 :(得分:0)

我认为你的错在于汇集,所以试试吧 Pooling = True也确保删除你所拥有的单个引号,'

还有一点你可能想要研究,我认为池默认是启用的,所以设置Pooling = True,虽然这是显式的,如果我没记错,它没有效果,而Pooling = False有效果。

答案 1 :(得分:0)

要使其工作,您可以尝试调用基本构造函数,如下所示:

public MyDbContext()
    : base("MyDBConnection", backend, metadataSource)
{
}

在这种情况下, backend metadataSource 将成为MyDbContext类中的字段,其中包含后端的配置和映射的配置。

Creating OpenAccessContext文章中,您将找到有关上下文设计的更多详细信息。