Hallo
Vorab gleich mal eine Info: Ich habe dieses Thema schon sehr viel "gegoogelt" & auch in englischen Foren Fragen zu diesem Thema gestellt. Doch leider finde ich absolut keine befriedigende Antwort, aber vl. liegt es ja auch an mir & ich
versuche etwas zu schaffen, das technisch nicht möglich ist...
Zur Fragestellung: Grundsätzlich gehe ich davon aus, dass ich bei Dependency Injection (DI) alles als entkoppelt betrachten kann/soll.
Das bedeutet, ich habe eine Business Domain, die auf DTO's zugreift. Diese DTO's müssen aber nicht zwingend mit den DTO's meiner Datenbank zusammenpassen, trotzdem sollen sie kommunizieren können (hier ist eigentlich schon das Problem, da alle Beispiele
im Web davon ausgehen, dass die DTO's immer die selben sind - also die DTO's vom Entity Framework genutzt werden)
Praktisches Beispiel:
Ich habe eine POCO Klasse, mit dem Namen: Artikel. - Diese Klasse wiederum hat 3 Eigenschaften: Id, Name, Preis
Diese POCO Klasse ist ausgelagert in ein eigenes Projekt & dieses Projekt verweist auf:
1) Business Domain Projekt
2) Interface Projekt (das Projekt, welches alle Projekte untereinander per Interfaces kommunizieren lässt)
3) Das Datenbank Projekt
Mein Gedankengang ist nun, dass ich im Datenbankprojekt das Projekt mit den POCO Klassen entgegennehme, die Datenbank abfrage, die Daten aus der DB in die POCO Klass umwandle & an das Business Domain Projekt zurückgebe.
Ich hoffe, dass das Konzept soweit richtig ist & auch verstanden wurde. :)
Das Problem, dass ich nun sehe ist, dass ich im Business Domain Projekt keine LINQ Abfrage machen kann (außer ich lasse mir immer alle Daten aus der Datenbank zurückgeben - was ja absoluter Schwachsinn wäre).
D.h. eine Möglichkeit wäre es, im Datenbank Projekt voreingestellte Abfragen tätigen (z.B. GetArticleById(Id As Long) )
Aber eine Dynamische Abfrage ist nicht möglich, da die POCO Klassen nicht in die Datenbank DTO's umgewandelt werden kann.
Oder gibt es dazu eine Möglichkeit? (Das ist meine explizite Frage)
Denn wenn ich die DTO's des Datenbankprojekts "verweise", dann bin ich ja wieder Abhängig von dem darunterliegenden Entity Framework.
Das macht dann das Thema von DI wieder obsolet, da wieder eine 100%ige Abhängigkeit besteht.
Hoffe, dieses Thema endlich (für mich) mal klären zu können.
Danke im Voraus!