Hallo, ich suche nach einer Möglichkeit eine Datenbankzugriff generisch zu halten, es soll für alle Repository Klassen eine Klasse existieren die anhand der **DataObjects **das jeweilige Objekt je nach Kriterien initialisiert. Über den Properties der **DataObjects **würde man Attribute mit den Namen der Spalten mappen. Anhand dieser Information könnte der Datenbankzugriff die jeweiligen Properties mit den Werten befüllen.
Im klassischen hätte man für etliche DataObjects Repository Klassen, wie z.B. CustomerRepository, ProductRepository, ... diese bauen das jeweilige Objekt aus einer **DataTable **bzw. **DataReader **auf. Gibt es hier eine wartbare, bessere Lösung?
Gibt es Patterns, Sample Projekte, die schon auf solche Thematik eingegangen sind?
Bitte nicht auf das Entity Framework verweisen.
Hallo #coder#,
wenn ich richtig verstanden habe was du willst, dann wäre das aber genau mit dem EF realisierbar. Warum willst du das nicht?
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!"
Das ist genau das was ein ORMapper macht.
Wenn du etwas kleines suchst, schau dir einen der neuen Micro-ORM an, wie Dapper.NET, Massive oder PetaPoco
Ob es gleich EF sein muss sei dahingestellt.
Wie sieht es mit der Geschwindigkeit und Performance der aktuellen Version vom EF4.1 aus? Ich habe eine Performance Tabelle mit der Gegenüberstellung von ADO.NET DataReader, NHibernate bis zum EF gesehen. Der DataReader ist schnell, aber man muss auf ein ORM verzichten, also es gibt Vor- und Nachteile.
Hallo #coder#,
am aussagekräftigsten ist wenn du das für den konkreten Fall durchmisst. Pauschale Aussagen/Tabellen geben zwar Zahlen wieder, aber wirklich auf die eigenene Anwendung lässt sich das nicht übertragen bzw. kann sich da ein anderes Bild abzeichnen.
Dass jedoch ein O/R-Mapper langsamer als der direkte ADO.net-Zugriff ist, sollte aufgrund des nötigen Overheads klar sein.
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!"