2017-02-09 8 views
0

私たちは、当社のアプリケーションスイートを開発中です。各アプリケーションは異なるビジネスロジックを持ちますが、いくつかの構造を共有しています。たとえば、あるアプリケーションは「ITサービス」用で、もう1つは会社の異なる建物間の「パッケージ処理システム」用です。別々のasp.net mvcプロジェクト(Entity framework Code-First)を使用して各アプリケーションを作成する必要があります。しかし問題は、すべてのアプリケーションがいくつかの類似したエンティティを持っていることです。たとえば、すべてがPeople,BuildingsおよびFloorsのエンティティをdbContextに持っています。この類似したテーブルとの関係を持つ他のテーブルもあります このアプリケーションを設計する最良の方法は何ですか?複数のアプリケーション間での共有エンティティ(テーブル)へのベストアプローチ

  1. すべてのアプリケーション用に1つのデータベースを作成しますか?副作用とは何ですか?
  2. アプリケーションごとに個別のデータベースを作成し、同様のテーブルを複製しますか? (現時点ではこの作業を行っていますが、このテーブルを常に同期させるSQLサーバージョブを作成する必要があります)。
  3. アプリケーションごとにデータベースと共有テーブルを作成します。これによりテーブル間の関係が失われ、マルチコンテキストアプリケーションも生成されます(私はこれが好きですが、Code-First EFとlinqでそれを読んで、複数のコンテキストにまたがるクエリはできません)
  4. または何か他のですか?
+0

あなたがやっていることはあなたのためにあなたのために他の人に頼んでいる。何を試しましたか?あなた自身の質問に答えてもらえますか? コードがエンティティを共有している場合は、別のプロジェクトを作成してコンパイルするだけです。プロジェクト間で共有してください。 – Stralos

+1

'People'、' Buildings'、 'Floors'はすべて実際に同じデータですか?つまり 'ITServices.People'の行が' PackageHandling.People'と同じ人物を参照することができますか?もしそうなら、私は#2がどのように合理的なアプローチであるのか見ていない。また、データベースシステムが同義語をサポートしている場合、#3のソリューションは参照整合性を持つことができ、複数のコンテキストを必要としません。その場合、機能的には#1と非常に似ています。そして、共有テーブル上で適切なロック機構を働かせる必要があります。ありがとう@ setphen.vakil。 –

+0

私は同義語のアイデア – iamnapo

答えて

0

私はDb管理システムで非常に興味深いです。私はまずあなたの3つの方法が好きです。それらのすべてにはそれぞれ長所と短所があります。あなたはこのデータベースに巨大なデータを持っている場合、2のようなソリューションのように別々のデータベースを使うことができます。しかし、あなたはあなたが言った同期メカニズムを開発しなければなりません。私たちが別のデータベースの別の優位性を見て、あるデータベースが失敗したり壊れたりすると、別のデータベースが動作するかもしれません:)しかし、エラーが修正されるまで、いくつかのdepartmantデータをunavailableすることができます。これは巨大なシステムには良いことです。

Lastylyは、このアイデアはとても良いですが、「共有のテーブルのデータベースやアプリケーションごとに別のデータベースを作成します」:)

あなたはN層artitecture少なくとも3層(ビジネス・プレゼンテーション・データを使用することができます可能性があり)と

BUSINES ==>あなたのワーカー機能

データ層==>多くのDbのコンテキスト

プレゼンテーション==> MVCプロジェクト

私はソリューション3とN層のArtchとのカップリング接続を失うのが最善の方法だと思います。

最後にあなたが尋ねるかもしれません。仕事の ユニット、Ninject Freamwork、N層トピック

注:D

は素敵な一日を:)

あなた場合:コード-最初:)私は多くのコードファーストのスタイルが好きAlwasy私はいくつかのN層構造を表示することができますしたい "CodeProject.com"の周りのレッスンリンクとStackoverflow

関連する問題