29

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

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

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

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

私は持っています:

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

connectionStringとして。

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

これ以上のアイデアはありません。connString、dllは/ binにあり、ローカルホストで機能しています。

何か案は?

ありがとう。

編集

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

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

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

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

十分に元気です。SqlServerCE4はありません。

ローカルコピーのDLL、別名/ bin:

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

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

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

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

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

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

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

4

6 に答える 6

31

私は自分の答えに答えるのは好きではありませんが、何時間も働いた後、私は答えを持っています!

必要なもの:

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 CE4の2つのdll、EF dll、web.configの構成、およびネイティブdll(NuGetがライブラリをダウンロードするパッケージディレクトリから)。

web.configconfigがSQLCE.dllの具体的なバージョンを指しているようで、RTMパッケージのバージョンが異なります。具体的なバージョンが見つからないため、NuGetの.dllを使用します。

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

于 2011-02-04T23:04:17.187 に答える
21

メニューの[プロジェクト/展開可能な依存関係の追加...]を使用するだけです。これがVisualStudio2010SP1のみかどうかはわかりません。

于 2011-03-25T10:03:57.940 に答える
4

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

それらを「C:\ ProgramFiles(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のドキュメントを参照してください。

于 2011-01-31T13:37:02.517 に答える
2

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

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

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

于 2011-01-31T01:35:12.003 に答える
1

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

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

幸運を。

于 2011-09-21T03:10:05.720 に答える
1

私も同じ問題を抱えていました。コードファーストのSQLCE4.0アプリをgoDaddyアカウントで使用できるようにしようとしています。

上記のスレッドや他のチュートリアルに基づいて、さまざまなDLLファイルをいじり始めましたが、何も機能していないようです。何かが足りませんでした。次に、展開可能な依存関係の追加応答 について読みました。

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

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

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

皆さんありがとう。これは、MVCとEFを快適に継続できるようになるための大きな一歩でした。

于 2012-05-03T12:47:08.350 に答える