CRUD über Aggregat Wurzel mit traditionellen ado.net
-
19-09-2019 - |
Frage
Kann mir jemand zeigen einfache CRUD-Anweisungen für Aggregat root traditionellen ado.net verwenden? Vielen Dank im Voraus!
Lösung
(Dies basiert auf der Annahme geschrieben, dass eine GUID oder einige nicht-Datenbank generiert Primärschlüssel verwendet wird) Auch eine Menge von Kessel Code wie Verbindungsmanagement etc ... sollte auf eine Basisklasse für Repository verschoben werden. Wenn Bestellen Sie das Aggregat Wurzel ist, möglicherweise sollte man OrderLineRepo der Montage privat
public class OrderRepository : Repository
{
public void Save(Order order)
{
if(order.IsDirty)
{
//sets up connection if required, command and sql
ICommand command = BuildCommandForSave(order);
command.Execute();
OrderLineRepository orderLineRepo = GetOrderLineRepo();
foreach(OrderLine line in order.OrderLines)
{
orderLineRepo.Save(line);
}
}
}
}
Allerdings würde ich betonen, dass dies wirklich eine einfache naive Implementierung, und das würde ich persönlich ein ORM wie nHibernate für meine Hartnäckigkeit nutzen, wenn DDD wie die Anforderungen für eine gute gut getestet Persistenz-Schicht zu tun bin nicht-trivial
Auch setzt dies voraus, dass die IsDirty Funktion Kinder berücksichtigt - wir würden auch ein Mittel benötigen, um zu sehen, wenn der Auftrag neu / bearbeiten, nicht nur schmutzig