Welches ist mehr bevorzugte Möglichkeit, Business-Objekt (und warum) zu implementieren?Business-Objekt mit Kontext oder nicht?
Ohne separaten "Kontext"
class Product
{
public string Code { get; set; }
public void Save()
{
using (IDataService service = IoC.GetInstance<IDataService>())
{
service.Save(this);
}
}
}
Und Nutzung wäre:
Product p = new Product();
p.Code = "A1";
p.Save();
Mit separatem "Kontext"
class Product
{
private IContext context;
public Product(IContext context)
{
this.context = context;
}
public string Code { get; set; }
public void Save()
{
this.context.Save(this);
}
}
Und Nutzung wäre:
using (IContext context = IoC.GetInstance<IContext>())
{
Product p = new Product(context);
p.Code = "A1";
p.Save();
}
Dies alles geschieht auf BL-Ebene (mit Ausnahme von Anwendungsbeispielen), nichts mit Datenbank usw. zu tun. IDataService ist eine Schnittstelle zur Datenschicht, um Geschäftsobjekte "irgendwo" zu speichern. IContext wickelt IDataService im Grunde irgendwie ab. Tatsächliche Geschäftsobjekte sind komplexer mit mehr Eigenschaften und Referenzen zueinander (wie Auftrag -> OrderRow < - Produkt).
Meine Meinung ist, dass der erste Ansatz (zu) einfach ist und die zweite Wahl gibt mehr Kontrolle außerhalb einzelner Geschäftsobjektinstanz ....? Gibt es Richtlinien für so etwas?
Wenn ich Lazy Laden mit verwandten Business-Objekten verwenden möchte (Like Produkt hat Liste der Teile), ist dies keine Option, denke ich? Nein, ich habe lazy loading implementiert im Zusammenhang mit dem Kontextfeld .... – Harza
Ich habe auch dies markiert, weil ich auch Pläne habe, Objekte auf verschiedene Arten zu persistieren und dies scheint sehr gute Wahl zu sein, aber diese faulen Laden .... – Harza
I Ich kenne keinen generischen Ansatz für Lazy Loading, es hängt wirklich von Ihrem Anwendungsfall ab. –