web-dev-qa-db-ja.com

MVC 3を使用するリモートホストでのSQL Server CE 4の使用

ホストをMVC 3にアップグレードしたばかりですが、SQLCE 4.0を使用して「hello world」を実行しようとしていますが、次のようになりました。

リクエストの処理中に申し訳ありませんが、エラーが発生しました。

レイアウトとすべてが表示されますが、データの代わりに表示されます。

ローカルホストで期待どおりに動作しています

私が持っています:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>

connectionStringとして。

私はsdfをプロジェクトの一部として置き、System.Data.SqlServerCE.dllをプロジェクトに追加し、ローカルコピーをtrueに設定しました。

これ以上アイデアはありません。 connString、dllは/ binにあり、localhostで動作しています。

何か案は?

ありがとう。

[〜#〜]編集[〜#〜]

私は今いくつかのログを持っています:

/ binに「System.Data.SqlServerCE.dll」がない場合:

要求された.Net Frameworkデータプロバイダーが見つかりません。インストールされていない可能性があります。

System.ArgumentException:要求された.Net Frameworkデータプロバイダーが見つかりません。インストールされていない可能性があります。

結構です。 SqlServerCE4はありません。

ローカルコピーのDLLを使用して、別名/ bin:

バージョン8482のADO.NETプロバイダーに対応するSQL Server Compactのネイティブコンポーネントを読み込めません。正しいバージョンのSQL Server Compactをインストールしてください。詳細については、KB記事974247を参照してください。

例外の詳細:System.Data.SqlServerCe.SqlCeException:バージョン8482のADO.NETプロバイダーに対応するSQL Server Compactのネイティブコンポーネントを読み込めません。SQLServer Compactの正しいバージョンをインストールしてください。詳細については、KB記事974247を参照してください。

KBには、x86およびAMD64のdllが必要だと書かれています。/bin/x86と/ bin/AMD64のように、2つのディレクトリを/ binにコピーすると、どこかで読みました。 SqlServerCE 4インストールフォルダーのプライベートフォルダーからそのフォルダーをコピーしました。今私は得ました:

ADO.NETプロバイダーとSQL Server Compactのネイティブバイナリの間にファイルバージョンの不一致が検出されたため、誤った機能が発生する可能性があります。これは、異なるバージョンのSQL Server Compactの複数のインスタンスが存在するか、SQL Server Compactバイナリと同じ名前の誤ったバイナリが原因である可能性があります。一致するバージョンのSQL Server Compactバイナリをインストールしてください。

OK。 SQLServerCE4のルートフォルダーにはいくつかのdllもあるので、その2つのフォルダーを削除し、そのdllを/ binにコピーしました。

ファイルまたはアセンブリ 'file:/// C:\ HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'またはその依存関係の1つを読み込めませんでした。モジュールには、アセンブリマニフェストが含まれることが期待されていました。

全部やってみたと思います。 Scottgu氏は、SqlServerCE 4はインストールしなくてもどのサーバーでも機能するはずだと語った。

29
Jesus Rodriguez

私は自分の答えに答えるのは好きではありませんが、何時間もの仕事の後に答えがあります!

必要なもの:

NuGet(プログラムファイルからDLLをコピーするよりも優れています)

NuGetを使用してインストールします。

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

問題は、EFがSQL CE 4用の別のdll(System.Data.SqlServerCe.Entity.dll)を必要とし、web.configにいくつかの構成を配置する必要があることでした。

  <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>

これで、すべてが機能しています。私は5つの異なるエラーを見たので、以下が必要です。

SQL CE 4の2つのdll、EF dll、web.configの構成、およびネイティブdll(NuGetがライブラリをダウンロードするパッケージディレクトリから)。

Web.config構成がSQL CE .dllの具体的なバージョンを指しているようで、RTMパッケージのバージョンが異なります。具体的なバージョンが見つからないので、 NuGetの.dll。

以上が、リモートホスト上のSQL CE 4 + EFです。

31
Jesus Rodriguez

メニュー「Project/Add Deployable Dependencies ...」を使用するだけです。それがVisual Studio 2010であるかどうかはわかりませんSP 1のみです。

21

管理対象のディレクトリに加えて、プライベートアプリケーションディレクトリ(\ binなど)にネイティブSQL CE 4.0 dllがあることを確認する必要があります。

"C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\v4.0\Private\AMD64"(または32ビットアプリの場合はx86)からコピーします。

MSVCR90.dllを展開することも賢明かもしれません。必要なDLLと再配布の詳細については、C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition\v4.0のドキュメントを参照してください。

4
WillG

これは、プロジェクトに複数の中間データが残っているために発生する問題のようです。クリーンアップせずに含まれているファイルを置き換えました。

Build-> Clean allを実行してから、すべての参照が新しい正しいDLLを参照していることを確認し、古いファイルや参照がプロジェクト内のどこにも残っていないことを確認することをお勧めします。それが完了したら、再構築を試みます。

これはhello worldプロジェクトであるため、新しいプロジェクトをゼロから始めて、そこに正しいdllを含める方が簡単な場合があります。

2
blueberryfields

sQL CEを手動でインストールしてください。

http://www.Microsoft.com/download/en/details.aspx?id=17876

幸運を。

1

私も同じ問題を抱えていました。コードファーストのSQL CE 4.0アプリを私のgoDaddyアカウントでプレイしようとしています。

私はさまざまなDLL上記のスレッドと他のチュートリアルに基づいたファイルをいじり始めましたが、何も機能していないようです。何かが欠けていました。それからAdd Deployable Dependenciesについて読みました=応答。

私はそれをしました、それは_bin_deployableAssembliesフォルダを作成しました。次に、コアプロジェクトのDLLを除く)をbinフォルダーからすべて削除し、_bin_deployableAssembliesからbinフォルダーにすべてをコピーしました。

GoDaddyアプリのbinフォルダー内のすべてを消去し、ファイルを再同期しました。うまくいきました。アプリが読み込まれ、コードファーストの変更をクラスに加えると、dbcontextがデータベースを再作成します。もちろん、それを本番環境で使用したくはありませんが、すべてが機能していることを知りたいと思っていました。

ASPホスティング環境へのMVCアプリのデプロイに関するチュートリアル(Cytaniumホスティングを例として使用)を使用して試しましたが、GoDaddyでは機能しませんでした。コピーする必要がありました。ファイルを手動で。

皆さんありがとう。これは、MVCとEFを快適に続行できるという私にとって大きな一歩でした。

1
Mark G