1

我有一個使用Sql CE 3.5 SP2的應用程序。我已經包含了Sql CE需要的DLL - 我在這裏找到了7個(C:\ Program Files文件(x86)\ Microsoft SQL Server Compact Edition \ v3.5),我只是將其作爲應用程序文件添加到我的部署包中。「Bin Deploy」Sql CE 3.5 SP2當它已經安裝時出錯

我也用EF來訪問數據庫,所以我已經添加到我的app.config文件中的條目提供數據提供:

<system.data> 
<DbProviderFactories> 
    <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.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
</DbProviderFactories> 
</system.data> 

做我的部署應用上述作品;然而,當我從VS2010調試模式下運行我的應用程序,即通過EF運行任何DB的電話打進來了這個錯誤:

The specified store provider cannot be found in the configuration, or is not valid. 

如果我刪除從我的app.config進入它工作正常,但停止工作針對已部署的應用

有沒有快樂的媒介?我假設錯誤的原因是因爲我的開發計算機上安裝了Sql CE的合法副本,並且出於任何原因,將它註冊到我的app.config中會導致它中斷,但我不完全明白爲什麼。

小貼士?建議?

在此先感謝。

回答

2

我應該做一些更多的搜索。我發現這個問題,看來我需要在添加提供程序之前刪除提供程序。當存在一個真正的Sql CE安裝時,它會將其自身註冊到machine.config中,因此將其添加到app.config會導致它被註冊兩次。

這是應該走在App.config

<system.data> 
<DbProviderFactories> 
    <remove invariant="System.Data.SqlServerCe.3.5" /> 
    <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.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
</DbProviderFactories> 
</system.data> 
相關問題