3

私はインターウェブ全体でいくつかの異なるスレッドを調べてきましたが、提案されたソリューションが私に役立つかどうかわからないか、それらの特定の状況が私がいる状況と同じではありません。

現在、約8ほどの異なる自己完結型データベースがあり、それぞれがさらに別の自己完結型Webサイト(asp.net webforms)の背後にあります。すべてのデータベースは非常に小さく、非常に特定の目的を果たします。とはいえ、どのスキーマと設計も実際には合理的な方法で一致していません。すべてが最終的にそのユーザーの単一のGUIDにマップされるユーザーを識別するさまざまなGUIDがありますが、それらの間のマッピングは異なり、場合によっては、3番目から必要なものを取得するために2つのデータベース間を移動する必要があります。少し面倒です。

混乱や重複データを減らすために、すべてを1つのデータベースにまとめるために完全にリファクタリングしたいと思いますが、プッシュバックのため、ソリューションは私たちが持っているものを使用する必要があります。

私がやりたいのは、これらすべてのデータベースに1つのアプリケーションでアクセスできるレイヤーを作成することです(新しいサイトを起動してそこに配置することもできます)。これに関するいくつかの質問:

  1. 各データベースでEntityFrameworkを活用し、それらすべてを同じアプリケーションに配置できる簡単なソリューションはありますか?

  2. データベースごとに実行する必要のあるすべてのCRUD操作をマップするWCFサービスのようなものは、効率的なソリューションでしょうか?

4

1 に答える 1

2

Entity Frameworkの各DBContextは単一のデータベースを使用するため、ここでのソリューションではデータベースごとに1つを使用する必要があります。私が通常行うことは、CRUD操作を実装するIContext周りを作成し、次に、複数のコンテキストを操作する「ビジネスロジック」(のような)を実行するを構築することです。IContextは、関連する「データベースオブジェクト」のセット(製品データベースのIProductContextなど)を表す必要があります。今のところ、データベースごとに1つのコンテキストしかありません。データベースが統合されているので、影響を受けるコンテキストの接続文字列を新しいデータベースに変更するだけで、コードを大幅に変更することなく(存在する場合)、復旧して実行できます。DBContextRepositoryRegisterUser

これが私が話していることについて見つけた良いイントロですが、これは私の「コンテキスト」リポジトリと私の「リポジトリ」を「作業単位」と呼んでいると思います 。http://www.asp.net/mvc/tutorials/ get-started-with-ef-using-mvc /implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

そうは言っても、複数のEF DBContextを抽象化する1つのWCFサービスを作成して、同じWebサービスを引き続き使用しながらバックエンドで変更を加えることができます。

于 2013-03-19T15:11:52.577 に答える