Laden...

OR-Mapper und ASP.Net

Erstellt von brokenlink vor 16 Jahren Letzter Beitrag vor 16 Jahren 8.517 Views
B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren
OR-Mapper und ASP.Net

verwendetes Datenbanksystem: MS SQL Server 2005, MySQL

Hallo alle zusammen,

ich will eine Seite in ASP.Net erstellen und überlege gerade ob ich ein OR-Mapper benutzen sollte? Ich habe bis jetzt keine so großartige Erfahrungen mit ORM gemacht. Bis jetzt haben mit ADO.Net vollig ausgereicht, aber man will halt immer was neues ausprobieren 😉

Habe hier im Forum viele Beitrage gelesen wobei die meisten vor 2 Jahren geschrieben und doch sehr alt sind. Die meisten schwören auf NHibernate 😉
Hier ist auch noch mal eine schöne Übersicht: http://davidhayden.com/blog/dave/archive/2005/03/19/876.aspx

Mit welchem OR-Mapper habt ihr besonders gute Erfahrungen, der:

  • MS SQL Server 2005, MySQL Datenbanken unterstützt
  • Vererbung auch unterstützt
  • auf referenzielle integrierten könnte man verzichten
  • auch mit 1000 Tabellen keine Probleme hat
  • auch komplexe Querys abbilden kann.

Das Problem bei ASP.Net Anwendung sind die Ressourcen. Der OR-Mapper sollte performant oder auch kein Ressourcenfresser sein.

Vielen dank im voraus

G
497 Beiträge seit 2006
vor 16 Jahren

ORM gehen immer zu Lasten der Performance. Ich selbst nutze trotzdem NHibernate, da es die Arbeit, wenn einmal konfiguriert und in einer Bibliothek gekapselt, extrem vereinfacht. Ich kann mit typsicheren Objekten arbeiten, bin mehr oder weniger unabhängig von der verwendeten Datenbank und kann mit Hibernate-Queries komplexe Abfragen durchführen, die sich nicht mehr auf die Datenbankstruktur, sondern die Hibernate bekannte Objektstruktur beziehen. Da ist natürlich einiges an Mappingaufwand zu leisten (wobei da Codegeneratoren wie MyGeneration gute Arbeit leisten), aber einmal erledigt, hat man lange hohen Nutzen davon.

ADO nutze ich seit meinen ersten Erfahrungen mit NHibernate fast gar nicht mehr. Da man den Zugriff per NHibernate relativ schnell eingerichtet hat, nutze ich das mittlerweile auch für kleinere Projekte.

S
8.746 Beiträge seit 2005
vor 16 Jahren

Wobei man sagen muss, dass das ADO.NET-Konzept i.d.R. ganz gut für einen massenorientierten ASP.NET-Backend passt. Je schreiblastiger das wird, desto eher tendiere ich zu OO-Ansätzen.

D
62 Beiträge seit 2004
vor 16 Jahren

Nachdem ich mit XPO keine guten Erfahrungen sammeln konnten, bin ich auf .NetTiers umgestiegen. Mit CodeSmith lässt sich dies sehr gut generieren, wenn die DB inkl. Beziehungen etc. bereits steht.

Leider erfordert es aber grössere Einarbeitungszeit, da wie ich finde die Doku nicht gerade sehr gelungen ist und es sehr wenig bis nichts im Internet gibt um nachzulesen oder Tipps zu holen. Ausgenommen das Forum von CodeSmith selbst.
Wenn jemand einen guten Literatur Tipp oder eine gute Webseite kennt dazu, wäre ich nicht unglücklich.

Wenn mir .NetTiers nicht zusagt (z.Z. sehr zufrieden) werde ich wohl als nächstes auch nHibernate probieren.

2.187 Beiträge seit 2005
vor 16 Jahren

😁 Ich hab mir meinen eigenen ORM geschrieben 😁

  1. Weil ich NHibernate zu späte gefunden hatte.
  2. Weil mich bei NHibernate diese Konfigurations-Dateien gestört haben.
  3. Weil .NET bessere möglichkeiten bietet, die Mappinginformationen abzulegen, als XML

Deine Anforderungen würder er meistern, leider ist die Dokumentation noch nich soweit, dass man ihn weiter geben könnte.

B
122 Beiträge seit 2004
vor 16 Jahren

Hallo,

Nutze auch Nhibernate für mein Projekt.

Und mit Generics braucht mann fast nichts mehr zu tun, außer das Objekt und die dazugehörige XML Datei zu erstellen.

StandartDataLayer<Customer>.create(_customer);

Für spezielle Sachen macht mann dann halt spezielle Datalayer 😁

Und die Datenbank wird per Nhibernate erstellt. Was da evntl noch fehlt wäre eine Update Funktion der Datenbank.

http://www.thomas-peterson.de/index.php?id=85

Hier mal erste Screens.

MFG

F
10.010 Beiträge seit 2004
vor 16 Jahren

Also Nettiers ist soetwas von geschwätzig ( riesiger code für wenig Funktionen)
das ich nicht weiss, warum man sich das antun sollte.

Wer jetzt mit ORMappern anfängt sollte ersteinmal "Linq for SQL" ansehen.

B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren
Linq

Guten Morgen,

freut mich über die vielen Antworten 😁

Linq ist eine feine Sache, aber kann keinen OR-Mapper ersetzen. Ist zum selektieren von Arrays, Views, Datenbank, XML usw. super geeignet, aber ORM bietet deutlich mehr vorteile. Um ehrlich zu sein ich hätte lieber eine richtige Objektdatenbank statt einem OR-Mapper 🙁

Nur du das Microsoft so viele Wege geht und man nicht genau wo man landet. Schade das sie ihren OR-Mapper eingestampft haben.

Werde mir erst mal den Nhibernate anschauen, weil er am meisten verbreitet ist und ich nur gutes gehrt habe 😉

Wollte auch erst Mal auch einen eigenen OR-Mapper schreiben, aber um alles abdecken zu können was ich brauche ... würde es einfach viel zu lange dauern. Heut zu Tage kann man nicht alles selber schreiben ... man muss auf auf andere Sachen zu greifen.

Nur durch den OR-Mapper gehen alle vorteile von dem SQL-Server 2005 verloren, da kann ich auch irgendeine DB nehmen. Ich glaube bei größeren Projekten würde man bei einem OR-Mapper auf Grenzen stoßen 🙁

Gruß

B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren

Original von JuyJuka
😁 Ich hab mir meinen eigenen ORM geschrieben 😁

  1. Weil ich NHibernate zu späte gefunden hatte.
  2. Weil mich bei NHibernate diese Konfigurations-Dateien gestört haben.
  3. Weil .NET bessere möglichkeiten bietet, die Mappinginformationen abzulegen, als XML

Deine Anforderungen würder er meistern, leider ist die Dokumentation noch nich soweit, dass man ihn weiter geben könnte.

Kann man den OR-Mapper irgendwie test 😉 würde gern ausprobieren.

S
8.746 Beiträge seit 2005
vor 16 Jahren

Original von brokenlink
Um ehrlich zu sein ich hätte lieber eine richtige Objektdatenbank statt einem OR-Mapper 🙁

Wer oder was hindert dich daran eine einzusetzen?

B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren

Original von svenson

Original von brokenlink
Um ehrlich zu sein ich hätte lieber eine richtige Objektdatenbank statt einem OR-Mapper 🙁

Wer oder was hindert dich daran eine einzusetzen?

Ganz einfach Objekt datenbanken kosten richtig viel Geld und ich würde auch keinen Web Hoster finden der diese auch noch unterstützt. Wenn die Lizenzen nicht so teuer wären und trotzdem mit ASP.Net bzw. C# programmieren könnte, dann sofort.

F
10.010 Beiträge seit 2004
vor 16 Jahren

@brokenlink:
Dann hast Du nicht wirklich alles zu "LINQ FOR SQL" gelesen.
Das ist ein ausgewachsener ORMapper, der durch die möglichkeit
der kompilierten Linq Abfragen auch noch ziemlich schnell ist.

B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren

Original von FZelle
@brokenlink:
Dann hast Du nicht wirklich alles zu "LINQ FOR SQL" gelesen.
Das ist ein ausgewachsener ORMapper, der durch die möglichkeit
der kompilierten Linq Abfragen auch noch ziemlich schnell ist.

Ich habe mich mit Linq vor ca. halben Jahr auseinader gesetzt und wohl nicht besonders gut 😉 Ich dachte Microsoft hätte das Projekt OR-Mapper eingestellt, aber wie es wohl aussieht ist LINQ wohl der Ersatz!!! Schade das alles noch in der Beta Phase ist und nicht besonders viele deutsche gute Dokumentationen gibt.
Wie sind den so euro Erfahrungen mit Linq und weiß man schon es offiziel raus kommt? LINQ soll ja mit .Net Framewark 3.6 und Visual Studio 2008 rauskommen, also wohl ende des jahres oder Anfang nächstes Jahres 🙁

http://msdn2.microsoft.com/en-us/library/bb425822.aspx

F
10.010 Beiträge seit 2004
vor 16 Jahren

Linq selber kommt dann, ist ziemlich flexibel und ja nicht bur für Datenbanken gedacht.

Auch gibt es ja verschiedene Unterabteilungen.

LinQ:
Ist nur die Spracherweiterung mit seinen Lambdaexp. und u.a. der möglichkeit
diese vorzukompilieren.

LinQ for XML /SQL...:
Ist dann eine Erweiterung eben für diese externe anbindung.

Entity Framework:
Das wird der echte "gegner" für NHibernate und co, denn dies ist erst der
grosse ORMapper.

Mit LinQ for Sql kann man schon 99% der normalen Anforderungen abdecken.
Wenn man die Queries kompiliert ( ja, das geht ) dann sind sie schneller,
als eine SP mit anschliesendem einlesen in die objekte.
http://blogs.msdn.com/ricom/archive/2007/07/16/dlinq-linq-to-sql-performance-part-5.aspx

B
122 Beiträge seit 2004
vor 16 Jahren

Hallo,

Das Hauptproblem besteht wohl darin das erstmal verschiedene Treiber für die Datenbanken entwickelt werden müssen.

MFG

F
10.010 Beiträge seit 2004
vor 16 Jahren

Die sind aber schon lange dabei.
Wenn du mal bei Sqlite schaust, der Treiber dafür ist schon seit 1 Jahr bei sf zu haben.

Sogar anbindungen von LinQ an NHibernate gibt es schon.

B
122 Beiträge seit 2004
vor 16 Jahren

Hi

Wie siehts denn mit MySql aus?

na ja Linq zu NHibernate ist ja so lala 😁

MFG

F
10.010 Beiträge seit 2004
vor 16 Jahren

MySql weiss ich nicht, habe ich sowieso eine etwas von der allgemeinheit abweichende Meinung zu.

Und warum soll LinQ to NHibenate schlecht sein?

Wenn Du sowieso schon NHibernate einsetzt, kannst Du auf alle dadurch
unterstützte Datenbanken zugreigfen, und kannst "langsam" migrieren.

Hier noch ein link zu einer zusammenfassung von scotts "Tutorial"
http://blog.norberteder.com/index.php?entry=entry070829-132805

B
brokenlink Themenstarter:in
19 Beiträge seit 2007
vor 16 Jahren

Hi,

nach mal zu LINQ. Also finde es bist gar nicht mal so schlecht, weil doch sehr einfach ist. Nur LINQ will nachträglich die Struktur der Datenbank nicht aktualisieren. Also wenn man erst mal eine Datenbank angelegt hat, kann man sie nicht mehr veränder. Kann sein das es erst Beta Version ist oder bleibt das so? Gruß und Danke 😉

M
233 Beiträge seit 2006
vor 16 Jahren

da verstehe ich deine Aussage nicht...
wenn sich die DB-Struktur ändert, dann generierst du einfach die Mappings neu, das geht auch mit LINQ(im VS2008 getestet).
Natürlich mußt du dann ggf. deinen Code anpassen.

F
10.010 Beiträge seit 2004
vor 16 Jahren

@brokenlink:
Das ist auch gut so.
Es wäre fatal für ein Unternehmen wenn jede "dahergelaufene" Anwendung
einfach so die Datenbankstrukturen anpasst.

P
2 Beiträge seit 2007
vor 16 Jahren

Hallo.

So ich krame den Thread mal wieder aus und schließe mich mit einer Frage an. Bitte nicht gleich über mich herfallen - ich habe schon gesucht, nichts passendes gefunden + ich bin noch ziemlicher Anfänger und habe noch nicht so ganz den Durchblick 😉

Also zu den Fragen:

  • arbeitet jemand mit LLBLGen?
  • kennt jemand gute deutschsprachige Hilfen/Foren/Dokumentationen/Tutorials?

wäre klasse - weil je mehr ich damit mache umso mehr verwirrt mich das Ganze 🙂.

Zu dem Problem an sich:
ich habe eine ASP.NET Seite, ein GridView und will es mit einer LLbgen Data Source verknüpfen. Ich habe den Code usw. auch alles schön erzeugt, so wie das in den Tutorials auf der offiziellen Seite beschrieben war gemacht - aber sobald ich die Datenquelle konfigurieren will/Entity Collection auswählen sind die Felder immer leer. Sprich ich kann mich zu nichts verbinden.
Was könnte ich falsch machen? Oder wo könnte ich den Fehler suchen?

Oder alternativ: eine gute Anleitung, wie ich diese Adapter erzeuge, in ASP.NET einbaue könnte mir auch helfen.

Weil irgendwie weiß ich leider gerade nicht wie/wo ich das Problem anpacken soll.

Vielen Dank schon mal - und sorry, wenns ne komische Frage ist!

[edit] nach zig andren Fehlern und einem Neustart funktioniert plötzlich alles. Warum weiß ich allerdings nicht.

M
110 Beiträge seit 2007
vor 16 Jahren

Hallo,

ich beschäftige mich auch sehr intensiv mit O/R Mappern. Das grosse Problem ist immer soll man aus einer Datenbank die Klassen generieren lassen, oder soll aus dem Klassen, die die Daten repräsentieren sollen die Datenbankstruktur erstellt werden.

Meine Entscheidung viel auf di erste Variante. Dazu gint es zwei Gründe. Es ist, wenn man es richtig angeht performanter. Ich brauchte eine Menge Events, auf die ich mch hooken will. Dazu erspare ich mir einfach tipparbeit, wenn ich das ganze generieren lasse.

Es ist aus meiner Sicht wesentlich schneller, wenn ich eine Datenbankstruktur aufsetzen und mir dann die Klassen dazu generieren lasse. Die Verbindungen zwischen den einzelnen Klassen muss man dann noch selber nachziehen. Aber dieser Aufwand ist überschaubar.

Für meine Internetseite verwende ich ebenfalls einen O/R Mapper. Bisher kanni ch mich nicht beklagen. Es liegt wohl auch daran, dass es mein eigener ist 🙂. Die Performance ist absolut im grünen Bereich. Das liegt aber daran, dass ich auf genau diesen Punkt sehr viel Wert lege.

Auf jeden Fall empfehle ich immer O/R Mapper. Durch sie benötigt man das lässtige SQL nicht mehr und sie machen es einfacher damit zu arbeiten, das sie typsicherheit bieten.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

W
25 Beiträge seit 2006
vor 16 Jahren
Ist zwar schon was älter,...

... der Beitrag, aber da die vorletzte Antwort von 15.11. ist, setze ich noch einen drauf 😉)

Schau Dir mal

www.subsonicproject.com

an (s. auch meinen heutigen Post dazu).

Das ist ein Codegenerator, der für ASP - Seiten optimiert ist und auch noch ein paar nützliche Controls mitbringt.

Lässt sich sehr einfach installieren. Ich hatte den ersten lauffähigen DAL nach 5 Minuten. Mit anderen Tools (z.B. NHibernate) brauche ich beim ersten Mal deuuuuuuuutlich länger.

Den OR-Mapper von Mirko kenne ich noch nicht. Werde ich mir aber auch ansehen.

Mit freundlichen Grüßen

Walter Grimm

M
110 Beiträge seit 2007
vor 16 Jahren

Hallo Walter,

das ganze werde ich auch machen. Den Link den du angegeben hast werde ich mir ebenfalls ansehen.

Man lern ja immer etwas dazu. Vielleicht kann ich dabei auch noch was lernen 🙂

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator

2.187 Beiträge seit 2005
vor 16 Jahren

Hi,

Wenn Ihr den Thread eh wieder ausgegraben habt:
Mein OR-Mapper wurde zum ersten mal in einem Web-Projekt eingesetzt. Der Live-Betribe steht kurz bevor oder läuf schon (hab grad Urlaub, daher weis ich es nich sicher) und wenn es jemanden Interesiert, kann ich mal ein Paar informationen über Leistung, Resourcen und Co. posten, wenn Sie vorliegen. ((Glaub ich zwar nicht, aber man kanns ja mal anbieten g))

Gruß
Juy Juka

F
10.010 Beiträge seit 2004
vor 16 Jahren

Klar wäre das interessant.