实体框架代码首先处理连接字符串配置

时间:2017-09-11 06:40:52

标签: c# asp.net sql-server entity-framework

我实施了Identity&对我现有的asp.net Web表单应用程序的OWIN身份验证。我提到了网站: https://docs.microsoft.com/en-us/aspnet/identity/overview/getting-started/adding-aspnet-identity-to-an-empty-or-existing-web-forms-project

我遇到实体框架代码第一种方法的连接字符串问题。我提到了网站:http://odetocode.com/Blogs/scott/archive/2012/08/14/a-troubleshooting-guide-for-entity-framework-connections-amp-migrations.aspx寻求帮助。但是他们都没有工作。

我使用VS 2015,SQL Server 2014& Windows 10操作系统。

对于SQL Server身份验证(Windows身份验证),我的服务器名称为:DESKTOP-07C2G55

我按照网站上的说法改变了我的连接字符串,但没有一个工作。我的第一个连接字符串是::

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=DESKTOP-07C2G55;Initial Catalog=WebFormsIdentity;AttachDbFilename=|DataDirectory|\WebFormsIdentity.mdf;Trusted_Connection=Yes;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
            <parameter value="v13.0" />
        </parameters>
    </defaultConnectionFactory>
    <providers>
        <provider invariantName="System.Data.SqlClient" 
                  type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
</entityFramework>

当我尝试注册任何用户时使用此连接字符串我收到错误:

  

文件“c:\ users \ myPC \ documents \ visual studio 2015 \ Projects \ RENTAL \ RENTAL \ App_Data \ WebFormsIdentity.mdf”的目录查找因操作系统错误5(访问被拒绝)而失败。

     

CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:文件“c:\ users \ myPC \ documents \ visual studio 2015 \ Projects \ RENTAL \ RENTAL \ App_Data \ WebFormsIdentity.mdf”的目录查找因操作系统而失败错误5(访问被拒绝。)。

     

CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误。

然后我在VS控制台中运行以下命令。我明白了:

PM> Get-Service | Where-Object {$_.Name -like '*SQL*'}

Status   Name               DisplayName                           
------   ----               -----------                           
Running  MSSQLFDLauncher    SQL Full-text Filter Daemon Launche...
Running  MSSQLSERVER        SQL Server (MSSQLSERVER)              
Running  MSSQLServerOLAP... SQL Server Analysis Services (MSSQL...
Stopped  SQLBrowser         SQL Server Browser                    
Stopped  SQLSERVERAGENT     SQL Server Agent (MSSQLSERVER)        
Running  SQLWriter          SQL Server VSS Writer 

PM> SqlLocalDb info
MSSQLLocalDB

然后我更改了连接字符串,将数据源链接到Data Source=MSSQLLocalDB

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=MSSQLLocalDB;Initial Catalog=WebFormsIdentity;AttachDbFilename=|DataDirectory|\WebFormsIdentity.mdf;Trusted_Connection=Yes;Integrated Security=True"  
         providerName="System.Data.SqlClient" />
 </connectionStrings>

我收到错误

  

键'attachdbfilename'的值无效。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.ArgumentException:键'attachdbfilename'的值无效。

我再次将连接字符串更改为Data Source= .\SQLEXPRESS

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=WebFormsIdentity;AttachDbFilename=|DataDirectory|\WebFormsIdentity.mdf;Trusted_Connection=Yes;Integrated Security=True"  
         providerName="System.Data.SqlClient" />
 </connectionStrings>

我收到了错误:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 查找指定的服务器/实例时出错)

我无法弄清楚问题的原因是连接字符串还是代码中的任何其他位置是什么问题。在其他解决方案中,提到编辑DBContext类,但在教程中没有创建这样的类。我没有使用MVC,简单的Web表单应用程序试图实现Identity和OWIN模块。请帮我。

1 个答案:

答案 0 :(得分:4)

PowerShell脚本的输出显示您有一个运行的默认实例(&#34;实例&#34;名称changeSelected(event) { this.roleId = event.ID; } ):

MSSQLSERVER

这意味着,您可以使用Running MSSQLSERVER SQL Server (MSSQLSERVER) (或Data Source=.)作为服务器名称(不得定义实例名称以连接到默认< / em> instance),在Data Source=(local)中定义数据库名称,并一劳永逸地删除Initial Catalog个废话(让SQL Server处理所有与文件相关的ins和出局 - 不要自己弄乱AttachDbFileName数据库文件!):

.mdf