2017-01-23 1 views
0

Ich habe 3 Projekt (C#) API, BLL und DAL. Die DAL referenziert die DAL und die API referenziert die BLL.Verwenden Sie BLL-Funktionen ohne Verweis auf die DAL in meiner API

enter image description here

enter image description here

In meiner API muss ich alle CRUD-Funktionen verwenden, aber ich kann nicht die Funktion von meinem BLL verwenden, da VS sagte, dass „Der Typ‚blabla‘in a definiert ist Assembly, die nicht referenziert ist. Sie müssen die Referenz (DAL) hinzufügen, aber ich möchte nicht auf die DAL im API-Projekt verweisen. Gibt es eine Möglichkeit, dies zu tun, ohne mein DAL-Projekt zu nutzen?

+2

müssen Sie auf die DAL Ihres Hauptprojekts verweisen, wenn die BLL davon abhängt. Sonst wie findet der BLL die Funktionen die er anrufen soll? Der kompilierte Code der DAL würde fehlen. So funktioniert es, es gibt keine Bedenken. – ADyson

+0

Aber du BLL sollte irgendwo DAL verwenden? – McNets

+0

@ADyson mein BLL-Projekt verwendet die DAL, aber warum sollte ich einen Verweis auf DAL in der API hinzufügen, wenn ich BLL darin verweise? –

Antwort

1

Meiner Meinung nach, was Sie erreichen wollen, ist eine gute Möglichkeit, das Projekt zu gestalten. Ich mache das auch; nur ein kleiner Unterschied, den ich unten erklären werde. Wenn Sie nicht auf DAL in API verweisen, stellen Sie sicher, dass jeder Aufruf von DAL nur über BLL erfolgt. Dies ist notwendig, weil ich meine gesamte Datenverarbeitungslogik an einem Ort ablegen möchte. Wenn es verteilt wird, ist es schwierig, Probleme zu lokalisieren.

Ich habe vier Projekte:

  1. Utils (Ihre "blabla" Sachen geht hier) [Referenzen nichts]
  2. DAL (Datenbank Sachen geht hier) [Referenzen Utils]
  3. BLL (Ihr Logik Sachen geht hier) [Referenzen DAL und Utils bei Bedarf]
  4. Api (API Sachen geht hier) [Referenzen BLL und Utils bei Bedarf]

Dies ist eine Einweg-Referenzkette. DAL => BLL => API. Referenzen in umgekehrter Reihenfolge sollten nicht existieren. Utils sollte gemeinsame Sachen sein, in denen gängige Dinge wie Entity-Deklarationen, Exceptions, Enums gehen sollten.

Hinweis: Obwohl Sie die DAL in der API nicht referenzieren, müssen Sie sie bereitstellen.

Um die Verwendung von Utils in API zu vermeiden, müssen Sie möglicherweise eine weitere Schicht von DTOs hinzufügen und sie mit Entitäten abbilden. Siehe meine anderen question auf demselben.

Verwandte Themen