Ich grüße alle,
Ich habe recherchiert und fand eine Reihe von Diskussionen über die Gestaltung eines MVC-Service-Schicht, aber ich habe nicht eine Antwort auf meine genauen Fragen gefunden. Der Beitrag auf Interdependenz der Dienstebenen hat ein Bild, das veranschaulicht, was mir vorschwebt, aber ich habe eine weitere Frage, die meines Erachtens in dem zitierten Beitrag nicht behandelt wird.
Meine Anwendung wird Daten für eine gemeinnützige Organisation verfolgen, die mit Menschen in verschiedenen Kontexten interagiert. Vielleicht war der Mensch ein Kunde, vielleicht war er ein Berater oder vielleicht war er ein Widersacher. Es können mehrere sein. Ein Kunde kann später zu einem Gegner werden (denken Sie an die Kunden von Anwälten).
Meine Idee ist, dass die Erstellung eines neuen Kunden oder eines neuen Gegners immer zwei Datensätze erzeugt: Ein Datensatz in der Personentabelle und ein Datensatz in der Zusatztabelle. Mein Gedanke dahinter ist, dass es einen Ort (die Personentabelle) gibt, an dem überprüft werden kann, ob das Unternehmen in der Vergangenheit eine Interaktion mit einer bestimmten Person hatte.
Meine Frage ist, wenn Entitäten in einer 1 zu 0..1 Beziehung zur Steuerungsebene dargestellt werden, (1) Sollte der Controller an der Kombination und Aufteilung von Klassen beteiligt sein, bevor er sie an einen View weitergibt? (2) Wenn nicht, sollte die Serviceschicht das Viewmodel konstruieren?
Ich habe den Beitrag über die Linie 1800 Controller gelesen. aquí . Ich habe auch gelesen diese Stelle die sagt, dass Ihre Service-Schicht nicht über das Ansichtsmodell wissen sollte, was mich denken lässt, es lebt und stirbt in der Controller-Schicht. Wenn die Service-Schicht nicht berühren das Viewmodel, zum Beispiel, (3) ist es ein gutes Design für die workerService
um beides zurückzugeben Person
et Worker
Objekte an den Controller?
Hier sind meine Entitätsklassen:
public class Record
{
public DateTime datecreated { get; set; }
public DateTime dateupdated { get; set; }
public string Createdby { get; set; }
public string Updatedby { get; set; }
}
public class Person : Record
{
public int ID { get; set; }
public virtual Worker Worker { get; set; }
publiv virtual Defendant defendant {get; set;}
...
}
public class Worker : Record
{
public int ID { get; set; }
public virtual Person person { get; set; }
...
}
public class Defendant : Record
{
public int ID { get; set; }
public virtual Person person { get; set; }
...
}