Ich habe folgendes Problem - oder besser gesagt, einen dringenden Bedarf an wertvollen Ratschlägen - mit Microsoft MVC. Eine bestimmte Aktion vom Client führt zur Erstellung von:
- Eine Anmerkung in der Tabelle Bemerkungen
- Ein Eintrag in der Tabelle für HourRegistrations
- Ein Eintrag im Changelog für Tickets
Ich verwende eine Dienstschicht für Geschäftsaktionen und Repositories für CRUD-Aktionen. Das Problem ist, dass ich manchmal Objekte aus verschiedenen Datenkontexten verbinden muss, so dass ich wohl ein fehlerhaftes Design verwende. Vor kurzem haben wir damit begonnen, die gesamte Geschäftslogik aus unseren Controllern und Repositories zu entfernen, und das ist eines der ersten Probleme, auf die ich stoße.
Beispiel:
BLogic.AddRemarks(Ticket t, ...)
{
Remark r = _remarksRepository.Create();
r.Ticket = t;
_remarksRepository.Add(r);
_remarksRepository.Save();
}
Dies löst kBOOM aus, da das Ticket im Controller über das Repository abgeholt wird. Bemerkung r und Ticket t teilen also nicht denselben Datenkontext.
Ich kann die Signatur der Methode ändern und eine int TicketId angeben, aber das fühlt sich nicht richtig an. Außerdem habe ich dann im weiteren Verlauf ähnliche Probleme.
Meine Repositories werden im Konstruktor der Serviceklasse erstellt. Vielleicht muss ich sie am Anfang einer Methode erstellen? Selbst dann muss ich oft Ids anstelle der echten Objekte übertragen.