7

Entity Framework 6 (Code First) と SQL Compact 4.0 を使用する基本的な MVC 4 アプリを、iis がインストールされた Windows 7 のクリーン インストールにデプロイしようとしています (mvc 4 と SQL Compact 4.0 はインストールされていません)。

次の nuget パッケージを db プロジェクトにインストールしました。

  • EntityFramework (バージョン 6.0.0-alpha2)
  • EntityFramework.SqlServerCompact (バージョン 6.0.0-alpha2)
  • Microsoft.AspNet.Providers (バージョン 1.2)
  • Microsoft.AspNet.Providers.Core (バージョン 1.2)
  • Microsoft.SqlServer.Compact (バージョン 4.0.8876.1)

web.config では、次の構成を取得しました。

<connectionStrings>
  <add name="[Name]" connectionString="Data Source=|DataDirectory|[FileName].sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>  

......................

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
     <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
     </parameters>
  </defaultConnectionFactory>
  <providers>
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </providers>
</entityFramework>

Bin フォルダー (sql ce ファイルは amd64 および x86 フォルダーにあります。

  • [amd64]
  • [x86]
  • Antlr3.Runtime.dll
  • DotNetOpenAuth.AspNet.dll
  • DotNetOpenAuth.Core.dll
  • DotNetOpenAuth.OAuth.Consumer.dll
  • DotNetOpenAuth.OAuth.dll
  • DotNetOpenAuth.OpenId.dll
  • DotNetOpenAuth.OpenId.RelyingParty.dll
  • EntityFramework.dll
  • EntityFramework.SqlServer.dll
  • EntityFramework.SqlServer.xml
  • EntityFramework.SqlServerCompact.dll
  • EntityFramework.SqlServerCompact.xml
  • EntityFramework.xml
  • Microsoft.Web.Infrastructure.dll
  • Microsoft.Web.WebPages.OAuth.dll
  • Newtonsoft.Json.dll
  • ShipMedProto.DB.dll
  • ShipMedProto.DB.pdb
  • ShipMedProto.Web.dll
  • ShipMedProto.Web.pdb
  • System.ComponentModel.DataAnnotations.dll
  • System.Data.DataSetExtensions.dll
  • System.Data.SqlServerCe.dll
  • System.Data.SqlServerCe.Entity.dll
  • System.Net.Http.Formatting.dll
  • System.Web.Helpers.dll
  • System.Web.Http.dll
  • System.Web.Http.WebHost.dll
  • System.Web.Mvc.dll
  • System.Web.Optimization.dll
  • System.Web.Providers.dll
  • System.Web.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll
  • WebActivatorEx.dll
  • WebGrease.dll
  • WebMatrix.Data.dll
  • WebMatrix.WebData.dll

クリーン マシンにデプロイすると、次のエラー メッセージが表示されます。

要求された .Net Framework Data Provider が見つかりません。インストールされていない可能性があります。

私の開発マシンでは問題なく動作しています。(SQL ceをインストールしました)

私が間違っていることの手がかりはありますか?

4

2 に答える 2

5

あなたが本当にやりたいことは、EntityFramework の SqlServerCompact サポートを追加するように NuGet パッケージを管理することだと思います。参照と Manager NuGet パッケージを右クリックするだけです。次に、ダイアログで SqlServerCompact を検索します。あなたはこれを見るべきです:

ここに画像の説明を入力

これを追加すると、上記の回答にあった同等の文字列が追加されます。私はweb.config(またはアプリを実行している場合はapp.config)でこれになりました

    <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="System.Data.SqlServerCe.4.0" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
        </providers>   
</entityFramework>   
<system.data>
        <DbProviderFactories>
          <remove invariant="System.Data.SqlServerCe.4.0" />
          <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" />
        </DbProviderFactories>   
</system.data>

申し訳ありませんが、私は約1年遅れていますが、これが他の人の助けになることを願っています.

于 2014-02-26T01:08:25.220 に答える