Gibt es allgemeine Muster zum Entwerfen von Klassen für schemalose Datenbanken in .NET?

8

Ich habe ein wenig mit mongoDB in C # gearbeitet, aber mein Code ist noch in der Entwicklung. Ich frage mich, welche nützlichen Muster die Leute gefunden haben, wenn sie ihre Domain-Klassen mit der Zeit weiterentwickeln, wenn neue Eigenschaften erstellt, verändert und entfernt werden. Mir ist klar, dass ich entweder Updates für alle meine gespeicherten Daten ausführen muss oder sicherstellen muss, dass meine Domain-Klassen wissen, wie man mit den älteren Formaten umgeht, aber im Laufe der Zeit könnte ich mir vorstellen, dass es chaotisch wird, wenn eine Klasse damit umgehen kann alle möglichen Formularformate.

Überlege ich das? Ist das meistens nur eine gute defensive Programmierung?

    
Matthew Nichols 06.03.2012, 23:27
quelle

1 Antwort

2
  1. Das Hinzufügen neuer Eigenschaften zu Ihren Datenobjekten kann nicht einfacher sein. Sie gerade füge sie hinzu. Es sei denn, Sie machen sich Sorgen darüber, dass diese Eigenschaften null sind Objekt, die in der Datenbank vorhanden sind, müssen Sie nichts tun sonst. Wenn einige Benutzer / Maschinen die ältere Version Ihres Anwendung und Ihre Klassen wurden mit markiert BsonIgnoreExtraElementsAttribute müssen sie möglicherweise nicht einmal aktualisiert werden ihre Software.
  2. Das Entfernen veralteter Eigenschaften kann nicht einfacher sein. Sie entferne sie einfach in deinen Klassen. Wenn Ihre Klassen mit markiert sind BsonIgnoreExtraElementsAttribute, dann müssen Sie nicht einmal entfernen sie in Ihrer Datenbank (zum Beispiel, wenn Ihre Benutzer mehrere haben Versionen Ihrer App).
  3. Das Umbenennen von Klasseneigenschaften ist ebenfalls einfach. Der BsonElementAttribute-Konstruktor verfügt über einen Parameter, sodass Sie ihn dem richtigen Eigenschaftsnamen in der Datenbank zuordnen können.
  4. Wenn Sie den Eigenschaftentyp ändern, müssen Sie möglicherweise ein Update auf Ihrem Computer ausführen Daten. Aber ernsthaft, wie oft ändern Sie den Eigenschaftstyp von String zu int in Produktion?

In vielen Fällen müssen Sie nicht einmal Aktualisierungen für Ihre Daten ausführen (es sei denn, Sie ändern den Datentyp oder Ihre Eigenschaft wirkt sich auf den Index aus). Ein weiterer Punkt ist, dass das Hinzufügen des BsonIgnoreExtraElementsAttribute häufig eine gute Übung ist, insbesondere wenn Sie Bedenken haben, dass Eigenschaften häufig hinzugefügt oder entfernt werden. Nach dieser Vorgehensweise können Sie ältere und neuere Versionen Ihrer Anwendung für die Arbeit mit allen Versionen von Datensätzen bereitstellen, wobei Sie die Vorteile von "Schematlosigkeit" genießen können.

    
Primary Key 07.03.2012, 00:06
quelle

Tags und Links