2011-04-16 88 views
6

我剛剛開始玩ASP.NET MVC。ASP.NET實體框架和連接字符串

<add name="ApplicationServices" connectionString="Data Source=localhost;Port=3306;Database=test;User id=root;Password=admin;" providerName="MySql.Data.MySqlClient" /> 
<add name="testEntities" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

當您添加ADO實體數據模型時,VS會自動在web.config上創建連接字符串和數據庫詳細信息。問題是我使用默認存在的使用「ApplicationServices」連接字符串的ASP.NET用戶/權限模式。所有這些表以及我的應用程序表都存在於同一個數據庫中。我希望數據庫詳細信息(主機/用戶/傳遞)來自單個連接字符串條目。或者即使有多個連接字符串條目,也可以單獨從單個源獲取數據庫詳細信息。

我來自PHP世界,無法弄清楚如何從我碰到的其他類似線程完成它。

謝謝

+0

的可能重複[實體框架 - 冗餘連接字符串。(http://stackoverflow.com/questions/3777722/entity-framework-redundant-connection-string) – Jacob 2011-04-16 20:03:23

回答

1

您是否嘗試過將「testEntities」重命名爲「ApplicationServices」?所以,你將與一個連接字符串結束:

<add name="ApplicationServices" connectionString="metadata=res://*/Models.testDB.csdl|res://*/Models.testDB.ssdl|res://*/Models.testDB.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;port=3306;database=test;User Id=root;password=admin&quot;" providerName="System.Data.EntityClient" /> 

你顯然需要調整EF設置更新的連接字符串的名稱爲好。

順便說一句: Entity Framework - redundant connection string

+0

有這樣的事情不會使會員作爲工作這應該。 我已經想通了,你不能使用另一個。 providerName =「MySql.Data.MySqlClient」有什麼區別? – Prasanth 2011-04-16 13:02:25

1

使用簡單的方法。在配置中僅定義ApplicationServices並在應用程序中構建EF連接字符串。 ObjectContext直接提供帶有EntityConnection或連接字符串的構造函數。將ApplicationService的連接字符串傳遞給EF連接字符串中的提供程序連接字符串部分。

EF提供了在配置部分定義連接字符串,但在90%的情況下,唯一會改變的部分是提供程序連接字符串。有關csdl,ssdl和msl文件的信息通常不會更改。更改這些資源的唯一原因可能是支持多個數據庫提供程序,在這種情況下,提供程序連接字符串部分也會發生更改。在我看來,許多應用程序可以在相關的上下文中直接硬編碼這些資源路徑。