我搜索時沒有找到與我的案例完全一致的答案。但是我在博客中提到了machine.config文件中提到的一個不良成形標籤。當它的樣子,我發現這非常關鍵的部分:
<system.data>
<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
在我machine.config文件的部分DbProviderFactories是空的。我試圖添加它,但無法使用,因爲它被某個應用程序鎖定。另一方面,我的客戶可能遇到同樣的問題,我很難讓他們編輯machine.config。所以我以簡單的方式實現了它:將該部分添加到我的應用程序配置文件中!瞧!一切都恢復正常。我的應用程序再次運行得很好。
但是爲什麼它在我以前的Windows安裝中工作?爲什麼這部分不總是添加到machine.config?爲什麼DbProviderFactories從未在SqlCe 4.0的演示示例中與EntityFramework 5.0一起提到作爲先決條件?這可能只是.Net Framework 4.5中的一個問題?
謝謝,我一定會擁有該建議使用。但爲什麼這麼複雜? SqlCe 4不適合客戶端安裝嗎?它不應該與ClickOnce一起使用嗎?或者我錯過了什麼?我知道微軟現在推薦SqlLocalDb,但我真的很喜歡基於文件的簡單數據庫的想法,可以很容易地移動。對於我的目的(〜1Mb),尺寸和速度非常好。我只是假設SqlCe 4將是最好的。 SqlLocalDb或SqlCe 3.5更容易部署爲客戶端數據庫嗎? – 2013-04-22 20:44:54
SQL CE 4是最容易部署的,並且可以與EF5一起工作 – ErikEJ 2013-04-23 14:06:06