2

私は現在 SOA プロジェクトに取り組んでおり、ある場所ではサービスが軽量のデータベース (SQL CE 4.0) を使用することが理にかなっていますが、他の場所ではより堅牢なデータベースが望ましい (現在は SQL Express ですが、スケールアップする可能性があります)より大きな版へ)。

モデルとテーブル構造は SQL Express と SQL CE の両方で同じですが、Entity Framework で同じ EDMX を使用して両方のデータベースを操作する方法がわかりません。概念モデルはどちらも同じで、ストレージ モデルの唯一の違いは、データベースへのアクセスに使用されるプロバイダー名です。

何かが足りないのでしょうか、それともデータベースごとに 1 つずつ、基本的に同一のモデルを 2 つ保持する必要があるのでしょうか。

.NET 4.0、Entity Framework、および VS 2010 SP1 を使用しています

4

2 に答える 2

1

残念ながら、異なるプロバイダーで2つの別々のSSDLを作成し、手動で同期を維持する必要があると思います(これは、ssdlファイルをコピーしてプロバイダーを置き換えるビルド後のスクリプトによって実際に実行できます)。それでも、テーブル構造が同じであることを確認する必要があります。

  • 同じテーブル名
  • 同じ列名
  • 同じデータ型

私が知っているように、SQLCEはSQLServerで一般的ないくつかのタイプをサポートしていないため、最後のポイントは重要になる可能性があります。たとえば、SQLCEではサポートされていないnavarchar(max)と思います。nvarbinary(max)

EFにSSDLファイルをリソースとして含めるのではなく、作成させるには、メタデータArtifcat処理(EDMXデザイナのプロパティ内)を[出力ディレクトリにコピー]に変更し、接続文字列を変更します。こちらが関連記事です。

于 2011-04-10T13:36:37.087 に答える
0

Code First に切り替えても構わない場合は、これを行うことができます。Gallery Server Pro 3.0は Code First を使用して、ユーザーの好みに応じて SQL CE または SQL Server をターゲットにします。web.config の接続文字列のみが異なる単一のコード ベースがあります。

これはオープン ソース プロジェクトなので、コードでどのように実行されるかを確認できます。

于 2013-04-02T19:26:05.593 に答える