Wir arbeiten an einer Reihe von Anwendungen in unserer Firma. Jede Anwendung hat eine unterschiedliche Geschäftslogik, teilt jedoch einige Strukturen. Zum Beispiel ist eine Anwendung für "IT-Dienste" und eine andere für "Paketbehandlungssystem" zwischen verschiedenen Gebäuden des Unternehmens. Wir möchten jede Anwendung mit separaten asp.net mvc-Projekten erstellen (Entity Framework Code-First). Das Problem ist jedoch, dass alle Anwendungen ähnliche Entitäten haben. Zum Beispiel haben alle von ihnen People
, Buildings
und Floors
Entities in ihrem dbContext
. und haben auch einige andere Tabellen, die Beziehungen zu diesen ähnlichen Tabellen haben Was ist der beste Ansatz zum Entwerfen dieser Anwendungen?Beste Vorgehensweise für gemeinsame Entitäten (Tabellen) zwischen mehreren Anwendungen
- Erstellen Sie eine einzige Datenbank für alle Anwendungen? Was sind Nebenwirkungen?
- Erstellen Sie separate Datenbank für jede Anwendung und duplizieren Sie die ähnlichen Tabellen? (Derzeit arbeiten wir daran, aber wir sollten einige SQL-Server-Jobs schreiben, um diese Tabellen immer zu synchronisieren. Daher denke ich nicht, dass es ein guter Ansatz ist)
- Erstellen Sie eine Datenbank für gemeinsame Tabellen und andere Datenbanken für jede Anwendung. Dies wird dazu führen, Beziehungen zwischen Tabellen zu verlieren und produziert auch Multi-Kontext-Anwendungen (Ich bevorzuge dies, aber ich lese, dass mit Code-First EF und Linq, ist es nicht möglich quer über mehrere Kontexte Query)
- oder etwas anderes?
Was Sie tun, ist jemand anderes zu bitten, die harte Arbeit für Sie zu tun. Was hast du schon probiert? Kannst du die Antworten auf deine eigenen Fragen geben? auch wenn der Code teilt Entitäten, könnten Sie einfach ein separates Projekt, kompilieren Sie es zu einem.DLL und teilen Sie es zwischen den Projekten. – Stralos
Sind die 'People',' Buildings' und 'Floors' eigentlich dieselben Daten? Könnte eine Zeile in "ITServices.People" sich auf dieselbe Person wie in "PackageHandling.People" beziehen? Wenn ja, sehe ich nicht, wie # 2 ein vernünftiger Ansatz ist. Auch Ihre # 3-Lösung könnte eine referenzielle Integrität aufweisen und würde nicht mehrere Kontexte erfordern, wenn Ihr Datenbanksystem Synonyme unterstützt. Es wäre in diesem Fall funktionell sehr ähnlich zu # 1. Und Sie müssen einen ordnungsgemäßen Sperrmechanismus für die gemeinsamen Tabellen ausarbeiten. –
danke @ setphen.vakil. Ich arbeite an Synonyma Idee – iamnapo