关键字不支持的数据源

asp.net connection-string entity-framework

我有一个带有默认成员资格数据库的asp.net-mvc应用程序。我正在通过ADO.NET Entity Framework访问它。

现在我想将它移动到IIS,但出现了几个问题。我不得不安装SQL Server Management Studio,创建新数据库,导入前一个.MDF文件中的所有数据。只剩下要做的事情(据我所知)是改为连接字符串。但是,我对此并不十分熟悉并且不断支持关键字:'数据源'。例外。这是我的连接字符串:

<add name="ASPNETDBEntities" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.EntityClient" />

有什么想法,有什么不对?

一般承认的答案

你拥有的是一个有效的ADO.NET连接字符串 - 但它不是一个有效的Entity Framework连接字符串。

EF连接字符串看起来像这样:

<connectionStrings> 
  <add name="NorthwindEntities" connectionString=
     "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl;
      provider=System.Data.SqlClient;
      provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

您缺少EF连接字符串中的所有metadata=providerName=元素......您基本上只包含provider connection string部分中包含的内容。

使用EDMX设计器应该在web.config或app.config中为您创建有效的EF连接字符串。

更新:好的,我明白你要做的是:你需要第二个“ADO.NET”连接字符串,仅用于ASP.NET用户/成员资格数据库。你的字符串没问题,但是providerName是错误的 - 它必须是“System.Data.SqlClient” - 这个连接不使用ENtity Framework - 不要为它指定“EntityClient”!

<add name="ASPNETMembership" 
     connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" 
     providerName="System.Data.SqlClient" />

如果指定providerName=System.Data.EntityClient ==> Entity Framework连接字符串(带元数据=和所有内容)。

如果需要并指定providerName=System.Data.SqlClient ==> 直接ADO.NET SQL Server连接字符串而不添加所有EF


热门答案

当您通过索引引用web.config(或app.config)连接字符串时,可能会发生此问题...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

基于零的连接字符串并不总是配置文件中的连接字符串,因为它默认从堆栈的上方继承其他字符串。

建议的方法是按名称访问您的连接...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

或者首先清除配置文件中的connnectionStrings元素...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因