我使用EF 6.1 Code First。我在編程一樣運行配置連接字符串:實體框架提供程序配置
myContext.Database.Connection.ConnectionString = "Data Source=(localdb)\v11.0;Initial Catalog=MyDb;Integrated Security=True;"
這工作得很好,但只有當我保留一些鍋爐板連接信息在我的應用程序/ web.config中:
<connectionStrings>
<add name="MyDb" connectionString="Data Source=NOTUSED;Initial Catalog=NOTUSED;" providerName="System.Data.SqlClient" />
</connectionStrings>
我懷疑這是因爲我沒有提供提供者信息。我指定供應商和defaultConnectionFactory段(SQL服務器/ LocalDbConnectionFactory),但它似乎並不關心:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
如果我刪除連接字符串部分,它會嘗試連接到那並不是一個MDF文件牛逼存在:
System.Data.SqlClient.SqlException:無法附加文件 'C:\我的 項目\ App_Data文件\ MyDb.mdf' 數據庫MYDB。
通常情況下,localdb連接字符串會生成到c:\ users \ my_user \ MyDb.mdf的路徑。所以它似乎不使用LocalDb工廠,除非我的.config文件中有連接字符串部分。
如何在每個上下文基礎上指定EF從該連接字符串節點獲取的providerName信息?或者我在這裏咆哮錯誤的樹?
這是正確的。我很抱歉沒有確認這一點。如果你願意,我可以創建另一個賞金問題並以這種方式獎勵積分。 – RMD
嗨RMD,那太棒了。很高興它解決了你的問題。 – blorkfish