Laden...

Fragen Entity Framework, Repository Pattern und Schichtentrennung

Letzter Beitrag vor 14 Jahren 2 Posts 2.954 Views
Fragen Entity Framework, Repository Pattern und Schichtentrennung

verwendetes Datenbanksystem: MS-SQL 2008r2 Express

Hallo,

ich habe mich in letzter Zeit ein wenig mit dem Entity Framework,
dem Repository Pattern und der allgemeinen Trennen(GUI, BL, DAL) beschäftigt und habe ein paar allgemeine Fragen.
Was ich vor allem brauche sind ein paar klare Aussagen. Ich muss dazu sagen, dass das alles noch ein wenig Neuland für mich ist und ich nur ein kleines Projekt zu Übungszwecken entwickle.

Das EF erstellt einem ja die Objekte aus der Datenbank. Sind diese erstellten Objekte meine BusinessObjects?

Das EF sorgt ja auch für den Datenzugriff auf die Datenbank, also wäre das Model ja eigentlich auch meine
komplette DAL und zum Teil auch BL, oder etwa nicht? Das heißt, ich müsste das Model(.edmx) in eine extra
Library packen? Oder darf das Modell in der BL liegen, damit ich direkt einen Zugriff aus z.B. einem GUI Eventhandler habe?

Wenn ich jetzt das Repository Pattern implementiere gibt es ja z.B. Klassen wie CustomerRepository, diese
Klassen würde dann mit dem Model zusammen in eine Library kommen und entsprechende Funktionen wie
GetAllCustomers usw. über ein Interface zur Verfügung stellen. Wenn ich nun in der GUI entsprechende Daten
aus dem DAL holen will, bräuchte ich außerdem noch Objekte in der BL(oder kommen dann die Repository klassen
dort hin?), wo auch irgendwelche Prüfungen usw. passieren, die mir meine Objekte liefern.

Ich habe echt schon das komplette Forum/Netz durchsucht, nur eine paar Begriffe sind mir einfach noch nicht so geläufig sodass ich manches nicht wirklich verstehe. Vielleicht mach ich mir da zuviele Gedanken für eine kleine Anwendung.

Ich hoffe Ihr habt ein paar Antworten oder Links für mich

Vielen Dank!

Hallo,

als Link empfehle ich dir zuerst Using Repository and Unit of Work patterns with Entity Framework 4.0.

Was ich vor allem brauche sind ein paar klare Aussagen

Das ist immer schwer denn es gibt nicht die Lösung. Persönliche Präferenzen spielen dabei auch immer eine Rolle. Hier kann ich naturgemäß nur meine Einstellung dazu wiedergeben 😉

Das EF erstellt einem ja die Objekte aus der Datenbank. Sind diese erstellten Objekte meine BusinessObjects?

Ja. Oder du hast vorher schon deine Business-Objekts dann kann beim EF mit POCOs gearbeitet werden. Siehe obigen Link.

Das EF sorgt ja auch für den Datenzugriff auf die Datenbank, also wäre das Model ja eigentlich auch meine komplette DAL und zum Teil auch BL

Hier muss mit den Begriffen augepasst werden. Das Model vom dem du hier schreibst ist das EF-Model. Business-Objekt im Zusammenhang mit Mustern wie MVC, MVP, MVVM, ... werden auch als Model aufgefasst.

Ja das EF-Model kann als Teil des DAL aufgefasst werden. Ich würde die Repositories und die konkrete UnitOfWork auch noch reinpacken - ähnlich wie im obigen Link.

Den BL solltest du komplett vom EF raushalten. Das rentiert sich zB wenn sich der Datenzugriff ändert.

Das heißt, ich müsste das Model(.edmx) in eine extra Library packen?

Müssen tust du nicht, es empfiehlt sich aber - v.a. bei größeren Projekten.

Wenn ich jetzt das Repository Pattern implementiere gibt es ja z.B. Klassen wie CustomerRepository, diese
Klassen würde dann mit dem Model zusammen in eine Library kommen und entsprechende Funktionen wie
GetAllCustomers usw. über ein Interface zur Verfügung stellen. Wenn ich nun in der GUI entsprechende Daten
aus dem DAL holen will, bräuchte ich außerdem noch Objekte in der BL(oder kommen dann die Repository klassen
dort hin?), wo auch irgendwelche Prüfungen usw. passieren, die mir meine Objekte liefern.

Ich versteh nicht ganz auf was du hinauswillst. Schau dir mal den Link an - vielleicht erklärt dies schon einige Punkte.

Bezüglich Prüfungen gibt es verschiedene Möglichkeiten. Entweder erfolgt eine Validierung (fallst du das meinst) direkt in den Businessobjekten oder über das Specification-Pattern, oder...

ch habe echt schon das komplette Forum/Netz durchsucht

Das ganze Netz bezweifle ich 😁

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"