Ich möchte eine Webanwendung mit 3-Tier-Architektur in ASP.NET erstellen. Aber ich bekomme ein Problem der Zirkelreferenzierung.Circular Referenz Problem in 3-Tier-Architektur C#
Ich habe 3-Schicht:
- Anwendungsschicht, die UI.
- Business-Schicht, die alle Logik- und Domänenklassen enthält.
- Datenschicht, die alle Datenbankinteraktionsmethoden enthält.
Ich bin mit der Datenschicht Methoden in Business-Schicht Datenbankoperationen durchzuführen und in diesen Methoden muß ich Domain-Klasse-Objekt Datenschicht passieren, aber es kann nicht aufgrund von Kreis Referenzierung erfolgen.
Zum Beispiel habe ich eine Person
Domain-Klasse mit einigen Eigenschaften und Methoden. Jetzt möchte ich das Person
in die Datenbank einfügen. Ich habe eine Methode in der Klasse Person namens InsertPerson()
. In diesem Methodenkörper muss ich die Funktion der Datenschicht aufrufen, um sie in die Datenbank einzufügen. Aber ich bin nicht in der Lage, das gesamte Personenobjekt in die Datenschichtmethode zu übertragen, da die Datenebenenreferenz zu der Geschäftsschicht hinzugefügt wird und umgekehrt nicht möglich ist.
Also, wie kann ich dieses Problem vermeiden? Bitte vorschlagen.
Wie ich es getan gesehen habe 1. Es gibt eine Basisklasse aller Geschäftsobjekten Jets, von denen sowohl die Unternehmens- als auch die Datenschicht Kenntnis haben. Es kennt seine Tabelle und ist einer Zeile zugeordnet. 2. Um zu speichern, muss die Datenschicht nur ihre Zeile nehmen, ihr Schema untersuchen, die Abfrage konstruieren, um sie zu speichern, und sie in dieser Tabelle speichern. 3. Zum Laden wird dem Datenlayer ein Typ übergeben, der BusinessObjects als Unterklassen verwendet, und reflektiv den Konstruktor des Typs in der Zeile verwendet, die er aus der Tabelle bezieht. – Patashu
Ich fügte meiner Antwort eine Bearbeitung hinzu, um klarer zu beschreiben, was ich meinte. –