2015-04-17 75 views
0

我正在使用Entity Framework 6.1.3,DB-first方法和SQL Server。經過模型生成實體框架包括在我的項目連接字符串中的下列方式app.config文件:如何將EF6.1連接字符串從connectionStrings移至appSettings配置文件部分?

<connectionStrings> 
    <add name="MyEntities" connectionString="metadata=res:... 
     provider=System.Data.SqlClient;...App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
</connectionStrings> 
... 
<providers>  
    <provider invariantName="System.Data.SqlClient" 
       type="System.Data.Entity.SqlServer.SqlProviderServices, 
       EntityFramework.SqlServer" /> 
</providers> 

,基本上我想這個連接字符串從connectionStrings部分移動到appSettings部分,這樣我就可以使用通過connection string到db上下文。爲此,我需要正確合併connectionStringproviderName屬性值。

什麼是provider部分connectionStringproviderName?他們是否確定將用於訪問數據庫的庫?在那種情況下將使用哪一個:this one,that one或另一個?如何在appSettings部分中將連接字符串指定爲單個字符串?

我試過只把connectionString的屬性值放在appSettings裏,現在所有的東西似乎都能正常工作。但爲什麼然後有一個providerName屬性呢?

有幾個similar questions,但他們都沒有完全回答這個問題。

回答

0

您不需要需要 providerName。它只是一段與連接字符串一致的數據,它說明了連接字符串應該使用哪個提供程序。對於可以利用多個提供者的工具很有用,例如SqlDataSource控件。無論如何,默認通常是SqlClient。底線是如果你不包括它,一切仍然有效,那麼不用擔心包含它。

+0

這是連接字符串屬性的providerName和provider部分中指定的不同種類的'provider'? –

+0

@Leonid那你的問題是什麼? – mason

+0

我想知道他們爲什麼在這種情況下不一樣?在connectionString和providerName =「System.Data.EntityClient」屬性值內的provider = System.Data.SqlClient'。 –

相關問題