關鍵字不支持的數據源

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合法嗎? 是的,了解原因