Ich bin mit Domain-Driven-Design haben Sie eine Einheit Menü aufgerufen, müssen überprüfen, ob die Artikel auf drei Ebenen nach oben, wird die Klasse nun wie unten gezeigt Ebenen (public bool VerifyLevels()
), ist es richtig, hier in der Entität zu sein oder ist es korrekt, dass es im Repository ist?Verification Methods in Entity
0
A
Antwort
1
Ja, es ist richtig, Validierungen in Ihrer Entität zu setzen. Auf der anderen Seite könnten Sie diese Validierung von Ihrer Repository-Save-Methode aufrufen, um sie vor dem Speichern zu validieren, z.
public class MenuRepository : IMenuRepository
{
public bool Save(Menu menu)
{
if (!menu.VerifyLevels())
return false;
if (menu.ID == 0)
context.Menus.AddObject(menu);
else
context.ObjectStateManager.ChangeObjectState(menu, EntityState.Modified);
context.SaveChanges();
returns true;
}
}
1
Es hängt von Ihrer Vorliebe ab. Domain Driven Design ist mehr eine Art zu denken als eine Art zu tun.
Manche Leute möchten ihre Entity Model Layer sehr leicht und sauber halten - und stellen daher keine Validierung dort.
Meiner Meinung nach sind Entitäten keine DTOs (Datenübertragungsobjekte) und sollten daher nicht blutarm sein. Ich mag keine anämischen Domain-Modelle, weil die Wiederverwendung von Code beeinträchtigt: http://en.wikipedia.org/wiki/Anemic_domain_model
Ich habe darüber nachgedacht, Validierung im Repository erstellen und den Scan nur ausführen, wenn Sie das aktuelle Formular speichern, wenn ich die Entität selbst für ein einfaches Lesen es scannt laden –