2009-04-14 5 views
0

Um Benutzer bei der wiederholten Dateneingabe zu unterstützen, versuche ich ein System zu implementieren, bei dem viele der vorherigen Eigenschaften beim Hinzufügen neuer Daten gespeichert werden.ORM - Speichern/Wiederherstellen von Standardwerten für ein DB-Objekt mit C#

Ist es möglich, die Properties.Settings.Default.MySetting-Funktionalität zu verwenden oder gibt es eine bessere Methode für diese Art von Sache?

+0

aus Neugier, was hat das ORM zu tun mit dem, was Sie fragen? – lomaxx

+0

Sehr wenig. Ich dachte nur, dass es eine allgemein akzeptierte Methode dafür geben könnte. – Damien

Antwort

0

Können Sie nicht einfach eine (tiefe) Kopie des vorherigen Objekts erstellen und dieses als nächstes Objekt verwenden, sodass Benutzer alle Felder überschreiben können, die sich geändert haben? Auf diese Weise würden die Felder das sein, was der Benutzer zuletzt eingegeben hat, individualisiert pro Benutzer und aktualisiert, wenn diese Felder abgeglichen wurden.

Wenn Sie eine Möglichkeit haben, sich an die letzte Sache zu erinnern, die pro Benutzer eingegeben wird, behalten Sie diese sogar zwischen den Sitzungen bei.

Die OP Kommentare:

Leider eine tiefe Kopie eines Objekts machen die Object vermasselt, wenn Beziehungen beteiligt sind. Für ein neues Objekt mit Beziehungen müssen entweder neue relationale Objekte erstellt oder vorhandene Objekte aus der Datenbank abgefragt werden.

Also? Wenn die Beziehung zu einer anderen Entität (einem Fremdschlüssel in der Datenbank) besteht, handelt es sich um eine Verwendungsbeziehung, und Sie behalten sie nur bei. Wenn es ein Attribut ist, kopieren Sie es.

Zum Beispiel, Ihr Formular ist Dateneingabe über Mitarbeiter, und es hat eine Dropdown-Liste für, ich weiß nicht, employeeType, das ist entweder "Befreit" (keine Überstunden) oder "Nicht befreit" (Überstunden). Sie haben die Werte für employeeType aus der Datenbank abgerufen, und Sie möchten, dass der nächste eingegebene Mitarbeiter die gleichen Werte wie der zuletzt eingegebene Mitarbeiter hat, um die Eingaben für die Eingabe von Personen zu speichern. Ihre tiefe Kopie würde also den kopierten Mitarbeiter mit der gleichen Datenbank employeeType verbinden.

Aber für Attributdaten (wie Name), würden Sie eine Kopie machen.

+0

Leider macht eine tiefe Kopie eines Objekts den Objektkontext durch, wenn Beziehungen involviert sind. Für ein neues Objekt mit Beziehungen müssen entweder neue relationale Objekte erstellt oder vorhandene Objekte aus der Datenbank abgefragt werden. – Damien

-1

Es hängt davon ab, was Sie erreichen möchten. Das Gute an der Verwendung der MySetting-Funktionalität ist, dass die Eigenschaften "Neueste" beim nächsten Schließen der Anwendung beibehalten werden können.

Ich gehe davon aus, dass dies eine Winforms-Anwendung ist, so würde ich möglicherweise eine zwischengespeicherte Instanz der letzten Sicherung jedes der Sicherungsobjekte in einer Hashtabelle irgendwo speichern und dann beim Erstellen eines neuen Formulars das Sicherungsobjekt nachschlagen in der Hashtabelle und binden Sie die erforderlichen Eigenschaften an die neue Instanz des Formulars.

Sie können dann die gesamte Hashtabelle zum MySettings-Objekt serialisieren und persistieren, wenn Sie möchten, damit es jedes Mal verwendet werden kann, wenn der Benutzer auf die Anwendung zugreift.