Frage

Also, ich habe ein schönes Domain-Modell gebaut. Repositorys behandelt den Datenzugriff und was nicht. Eine neue Anforderungen hat tauchte, der angibt, dass die Gründe mit Löschungen angemeldet sein müssen. Bisher haben Löschungen gewesen ziemlich einfach => Entity.Children.Remove (Kind). Keine interne Änderungsverfolgung geschieht als mein ORM-Tool wurde Zustandsverwaltung Handhabung. Allerdings bin ich mir nicht sicher, exactyl wie diese zu behandeln.

1) Ich kann eine gelöschte Kinder Sammlung in der Muttergesellschaft halten und die Änderung von nHibernate Tracking ziehen und es selbst behandeln.

2) ??????

War es hilfreich?

Lösung

Ok, das klingt verrückt, und ich werde einen weiteren Schuss auf diese nehmen - auch wenn ich für schlecht nHibernate Nutzung verloren werden könnten. Bevor Sie löschen, warum wählen Sie nicht die Kinder, die gelöscht werden wollen (Sie haben bereits ihre IDs richtig?) Und haben eine Transformation in das, was Unternehmen Sie gehen zu verwenden, um Ihr Löschungen an einen Tisch zu protokollieren. Fügen Sie den Grund für die Einheiten und speichern - dann mit Ihrem Löschungen fortzufahren. Der beste Teil, können Sie eine generische Einheit heißt „auditInfo“ für das Ergebnis der Transformation verwenden, und Sie können es innerhalb einer Transaktion tun, so dass Sie alles Rollback kann, wenn etwas schiefgeht! OK, vielleicht verrückt, aber kreativ richtig?

Andere Tipps

Könnten Sie den IInterceptor Schnittstelle implementieren und die onDelete Funktionalität überschreiben Sie die Informationen, die Sie von der Einheit müssen ziehen und es Logger zu senden, bevor Sie (mit NHibernate natürlich) löschen?

Beispiel

Wenn Löschungen für diesen bestimmten Entitätstyp relativ selten sind, würde ich eine Fahne an die Einheit fügt sie markieren als logisch „gelöscht“, anstatt tatsächlich die Zeile zu löschen. Die Anwendung würde dann muss das Versteck dieser Einheiten unter normalen Umständen behandeln.

Wenn dies eine nicht akzeptable Anzahl von „veralteten“ Reihen verursachen würde - ich würde etwas Ähnliches wie Watsons Antwort vorschlagen. Je nach den genauen Anforderungen könnten, werden Sie wahrscheinlich weg mit der gelöschten Datenprotokollierung und ein zusätzliches „Grund“ Feld irgendwo direkt aus der Anwendung. Mit Abfangjäger transparenten und gefällige aus einer Wirtschaftsprüfungs Sicht ist, aber ein separates Löschprotokoll (Tabelle, Datenbank, Datei) ist wahrscheinlich einfacher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top