私たちは、当社のアプリケーションスイートを開発中です。各アプリケーションは異なるビジネスロジックを持ちますが、いくつかの構造を共有しています。たとえば、あるアプリケーションは「ITサービス」用で、もう1つは会社の異なる建物間の「パッケージ処理システム」用です。別々のasp.net mvcプロジェクト(Entity framework Code-First)を使用して各アプリケーションを作成する必要があります。しかし問題は、すべてのアプリケーションがいくつかの類似したエンティティを持っていることです。たとえば、すべてがPeople
,Buildings
およびFloors
のエンティティをdbContext
に持っています。この類似したテーブルとの関係を持つ他のテーブルもあります このアプリケーションを設計する最良の方法は何ですか?複数のアプリケーション間での共有エンティティ(テーブル)へのベストアプローチ
- すべてのアプリケーション用に1つのデータベースを作成しますか?副作用とは何ですか?
- アプリケーションごとに個別のデータベースを作成し、同様のテーブルを複製しますか? (現時点ではこの作業を行っていますが、このテーブルを常に同期させるSQLサーバージョブを作成する必要があります)。
- アプリケーションごとにデータベースと共有テーブルを作成します。これによりテーブル間の関係が失われ、マルチコンテキストアプリケーションも生成されます(私はこれが好きですが、Code-First EFとlinqでそれを読んで、複数のコンテキストにまたがるクエリはできません)
- または何か他のですか?
あなたがやっていることはあなたのためにあなたのために他の人に頼んでいる。何を試しましたか?あなた自身の質問に答えてもらえますか? コードがエンティティを共有している場合は、別のプロジェクトを作成してコンパイルするだけです。プロジェクト間で共有してください。 – Stralos
'People'、' Buildings'、 'Floors'はすべて実際に同じデータですか?つまり 'ITServices.People'の行が' PackageHandling.People'と同じ人物を参照することができますか?もしそうなら、私は#2がどのように合理的なアプローチであるのか見ていない。また、データベースシステムが同義語をサポートしている場合、#3のソリューションは参照整合性を持つことができ、複数のコンテキストを必要としません。その場合、機能的には#1と非常に似ています。そして、共有テーブル上で適切なロック機構を働かせる必要があります。ありがとう@ setphen.vakil。 –
私は同義語のアイデア – iamnapo