我使用。mdf来连接数据库和entityClient。现在我想改变连接字符串,这样就不会有.mdf文件了。

下面的connectionString是否正确?

<connectionStrings>
   <!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />-->
   <add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

因为我总是得到错误:

基础提供程序在Open上失败


当前回答

在IIS中将应用程序池身份设置为服务帐户用户或管理员帐户或有权限对该数据库进行操作的蚂蚁帐户。

其他回答

我发现问题是,我在连接字符串中的一个变量中有服务器路径:

SERVER\SQLEXPRESS
SERVER

其实我应该:

.\SQLEXPRESS

由于某种原因,每当它难以定位SQL实例时,我就会得到错误。

我得到这个错误时调用异步EF方法从同步主控制台(等待被跳过)。

因为异步打开连接是针对已经处理的数据上下文。

解决方法:正确调用异步EF方法

由于连接状态,我遇到了类似的异常问题,然后我意识到我的域服务类变量被标记为静态(错误地)。

我的猜测是,一旦服务库加载到内存中,每个新调用最终都会使用相同的静态变量值(域服务实例),从而通过连接状态引起冲突。

我还认为每个客户端调用都会产生一个新线程,因此多个线程访问同一个域服务实例就相当于火车失事。

在我的情况下,我在上下文的构造函数中注册的连接字符串名称与我的web.config中的名称之间不匹配。简单的复制粘贴错误:D

    public DataContext()
        : base(nameOrConnectionString: "ConnStringName")
    {
        Database.SetInitializer<DataContext>(null);
    }

你可以尝试替换元数据:

元= res: / / conString.csdl | res: / / conString.ssdl | res: / * / conString.msl

to:

元数据=因素:/ / * /;