0

設定

  • サーバー上の Entity Framework を使用してアクセスする SQL Server 2008 データベースがあります。
  • 各クライアントには、オフライン時にデータを格納するための SQL Server Compact Edition 3.5 データベースがあります。
  • サーバー定義の Entity Framework から生成される自己追跡エンティティを使用します。

質問

現時点では、サーバー用とクライアント用の 2 つの EDMX が定義されていますが、ストレージ プロバイダー以外は同じです。サーバーのセルフ トラッキング エンティティを使用していますが、クライアント データベースで問題なく動作します。EDMX を 1 つだけにする方法はありますか? 現時点では、1 つの EDMX に変更を加えて、もう 1 つの EDMX に変更するのを忘れるリスクがあります。または、間違ったアプローチを使用していますか?

ノート

サーバー側で適用する必要がある複雑なビジネス ロジックのため、同期フレームワークを使用したくありません。

4

1 に答える 1

1

残念ながら、単一の EDMX を複数のストレージ プロバイダーで直接使用する方法はありません。プロバイダーごとに個別の SSDL 部分が常に必要です。一般的な回避策は、SSDL、MSL、および CSDL を個別のファイルとしてエクスポートし(既定の設定では、それらをリソースとしてアセンブリに追加します)、スクリプトまたはビルド前のアクションを使用して、2 番目のプロバイダーに必要なすべての変更を加えた SSDL ファイルのコピーを作成します (また、SQL Server と SQL Server CE ではデータ型が異なります)。接続文字列で指定することにより、アプリケーションごとに正しい SSDL ファイルを使用します。

別の「より良い」解決策は、EDMX を使用せず、この問題がほとんど存在しないコードを最初に使用することですが、それはアーキテクチャの変更です。

于 2012-07-10T08:40:52.520 に答える