Soll für jede Tabelle ein ADO.NET-Entitätsdatenmodell verwendet werden? Oder man für die gesamte Datenbank, in die Beziehungen auch geroutet werden, etc ...Sollte ich ein ADO.NET-Entitätsdatenmodell für jede Tabelle oder für meine gesamte Datenbank erstellen?
Antwort
Tun Sie es für die gesamte Datenbank. Wenn Sie ein Datenmodell für jede Tabelle erstellen, haben Sie nicht den Vorteil, die Beziehungen zu navigieren.
Wenn Sie Quellcodeverwaltung wie Subversion verwenden, beachten Sie, dass der Designer den XML-Code in dem Maße verarbeitet, in dem Subversion Schwierigkeiten hat, ihn zusammenzuführen. In diesem Fall müssen Sie normalerweise jedes Mal das gesamte Modell regenerieren oder manuell zusammenführen.
Ein für die gesamte Datenbank oder zumindest in den Tabellen Sie verwenden ...
Wenn Sie eine große Menge von Tabellen, die Sie könnte sie in Schemata oder eine andere kategorische Art brechen, aber ich würde sagen, dass die Idee nie Datenmodell pro Tabelle war ...
Ich denke, wenn Sie große Datenbank haben dann müssen Sie die Datenbanktabellen kategorisieren. Sie müssen jedoch für jede Tabelle eine Klasse erstellen, die eine Hauptanforderung des ado.net-Entitätsframeworks ist.
Wenn Sie die Datenbank aktualisieren, können Sie das Datenmodell aktualisieren.
Entwerfen Sie zunächst Ihre Datenbank und erstellen Sie dann das Ado.net-Entitätsmodell.
Ich würde ein konzeptionelles/Objektmodell der Daten unabhängig vom Datenbankschema entwerfen und dann die Zuordnung erstellen, die das konzeptionelle Modell am besten mit dem Datenbankschema in Beziehung setzt. Es kann die meisten, wenn nicht alle Tabellen verwenden. Wenn Sie eine Eins-zu-eins-Zuordnung zu Tabellen wünschen, sollten Sie stattdessen LINQ-to-SQL in Erwägung ziehen, da es einfacher ist, damit zu arbeiten.
Ich verwende ein Entity Data Model für verwandte Tabellen. Abhängig von der Größe Ihrer Datenbank würde ich nur ein Modell erstellen, wenn es weniger als 20 oder 25 Tabellen gäbe. Es ist ein wenig teuer, einzelne Modelle für jede Tabelle zu erstellen, da für jedes Modell ein EntityConnection-Objekt erstellt werden muss.
Ich finde, dass ich die Modelle ziemlich gut beibehalten kann, wenn ich zwischen 5 und 15 Tabellen habe. Mein Hauptentscheidungsfaktor ist Funktionalität. Ich baue technische Anwendungen, zum Beispiel habe ich etwa 6 Tische aus Baustahlkomponenten. Sie sind alle in einem Modell. Sie verfügen über gemeinsame technische Attribute, so dass es einfacher ist, Code zu verwenden, der spezifisch für die Manipulation dieser Attribute ist.
Das bedeutet, dass ich das Modell instanziieren, die Objekte erstellen, diese Objekte in einer gemeinsamen Codedatei bearbeiten/organisieren kann. Alle Änderungen, die zurück in die Datenbank propagiert werden müssen, können sehr effizient durchgeführt werden.
Die untere Zeile bestimmt Ihren Bedarf und die Häufigkeit der Verwendung für die zugrunde liegenden Objekte. Wenn Sie eine oder zwei Tabellen ständig aktualisieren, ist es nicht sinnvoll, innerhalb dieses Modells 30 andere nicht verwandte Tabellen zu haben. In diesem Szenario, in dem eine kleine Anzahl von Tabellen häufig verwendet wird, kann es sinnvoll sein, Sammlungen dieser Objekte zu erstellen, die Sammlungen zu bearbeiten und die Datenbank zu geeigneten Zeitpunkten zu aktualisieren.
Speicher-Maipulation ist viel billiger als Disk-I/O. Dies ist nur meine Sicht auf den Rahmen und keineswegs bin ich ein Experte darin.
Beachten Sie zusätzlich zu den obigen Antworten, dass ein EF-Modell tatsächlich konzeptionell ist. Es muss nichts mit der Struktur Ihrer Datenbank zu tun haben und muss nicht unbedingt die gesamte Datenbank darstellen.
Das Erstellen einer Klasse für jede Tabelle ist keine Voraussetzung für ADO.NET EF. Tatsächlich kann eine einzelne Entität mehreren Tabellen zugeordnet werden. –