2010-07-31 7 views
6

Es ist eine seltsame Frage, die ich weiß :)Repository-Muster, explizite oder implizite Speicherung?

Ich mag es wirklich, die Dinge in der richtigen Weise zu tun, und ich habe Zweifel.

Ich weiß, über eine Schnittstelle zu machen, DI mit ...

Meine Frage ist:

besser ist es, ein Verfahren zu haben, wie „Savechanges“, die Sie manuell aufrufen müssen jedes Mal wenn Sie hinzufügen/löschen/was auch immer ein Objekt ?:

_repo.Add(blah); 
_repo.SaveChanges(); 

Oder besser Änderungen innerhalb jeder Methode zu speichern, die die Daten ändern?

Auf der anderen Seite, sollte ich die Verbindung immer geöffnet haben oder muss ich sie schließen?

Im Lernen DB4O und ich haben eine Close-Methode, die ich anrufe, wenn ich das Repo an einem anderen Ort verwenden muss (Wie in einem anderen Fenster schließe ich, bevor ich das Fenster öffne).

Vielen Dank.

Antwort

2

Ich persönlich mag die SaveChanges-Methode, die getrennt werden soll. Ich denke, es ermöglicht mehr Flexibilität in den verbrauchenden Anwendungen. Was bedeutet, dass es mehr Wiederverwendung haben kann.

Zum Beispiel ermöglicht es die Trennung von einem 'Transaktions'-Ansatz, bei dem das Repository kontinuierlich modifiziert werden kann. Wenn dann alles akzeptabel ist, wird die Speichermethode aufgerufen.

Auf der anderen Seite können Sie, wenn Sie sofort ohne einen separaten Aufruf speichern möchten, eine andere Version des Repositorys erstellen, die die Sicherungsmethode während CRUD-Operationen aufruft.

+0

Fair genug, ich verstehe jetzt, wann die Methode oder nicht setzen. Vielen Dank. –

0

Ich denke in .Net DataSet verwenden sie auch AcceptChanges() - Funktion, um die letzten Datenänderungen zu "committen". Auch in Oracle-Datenbank gibt es einen COMMIT-Befehl für ähnliche Aufgabe.

Verwandte Themen