我正在开发一个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文件中使用相同的连接字符串,但后来我又得到了相同的错误(附图):
有人可以指导我......
谢谢Hari
答案 0 :(得分:0)
我认为你的错在于汇集,所以试试吧 Pooling = True也确保删除你所拥有的单个引号,'
还有一点你可能想要研究,我认为池默认是启用的,所以设置Pooling = True,虽然这是显式的,如果我没记错,它没有效果,而Pooling = False有效果。
答案 1 :(得分:0)
要使其工作,您可以尝试调用基本构造函数,如下所示:
public MyDbContext()
: base("MyDBConnection", backend, metadataSource)
{
}
在这种情况下, backend 和 metadataSource 将成为MyDbContext类中的字段,其中包含后端的配置和映射的配置。
在Creating OpenAccessContext文章中,您将找到有关上下文设计的更多详细信息。