2014-02-06 70 views
2

當我將connectionString名稱指定爲基礎構造函數的參數時,下面的配置工作正常。因爲我希望能夠稍後更改默認提供程序而無需重新編譯,所以我想將其設置在我的app.config中,但我不知道typedefaultConnectionFactory提供了什麼。MySQL的實體框架defaultConnectionFactory

<connectionStrings> 
    <add name="MySQL" providerName="MySql.Data.MySqlClient" connectionString="SERVER=localhost;DATABASE=abc;UID=root;PASSWORD=;" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, EntityFramework"></defaultConnectionFactory> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
    </providers> 
    </entityFramework> 

例外:

無法Database.DefaultConnectionFactory設定爲 實例的 'MySql.Data.Entity.MySqlConnectionFactory,的EntityFramework' 作爲在應用配置中指定的 類型。有關詳細信息,請參閱 的內部例外情況。

內部異常(翻譯,VS設置爲英語,但一些消息仍然在我的語言):

在 裝配未能加載類型「MySql.Data.Entity.MySqlConnectionFactory」「的EntityFramework 「

documentation指出大會名稱冒號後如下,因此,我也試過MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6,給我這樣的例外:

格式的初始化字符串的不符合規格 開始在索引0

我使用EF6,MySql.Data & MySql.Data.Entity.EF6 6.8.3.0。

回答

8

name連接字符串的屬性必須與您的上下文相同。這工作正常:

<connectionStrings> 
    <add name="NAMEOFYOURCONTEXT" providerName="MySql.Data.MySqlClient" connectionString="Server=localhost;Database=abc;Uid=root;Pwd='';" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory> 
    <providers> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider> 
    </providers> 
    </entityFramework> 
+0

我們如何在運行時從mssql更改爲mysql或mysql到mssql? [鏈接](http://stackoverflow.com/questions/43998212/dynamically-change-update-setdefaultconnectionfactory-and-setproviderservices-en)。請告訴我。 –