Laden...

Welche Technologie, bei mehreren Datenbanken? Meinungen und Erfahrungen gesucht!

Erstellt von manullino vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.495 Views
manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren
Welche Technologie, bei mehreren Datenbanken? Meinungen und Erfahrungen gesucht!

Hallo zusammen,

nachdem ich nun Wochen und Monate mit dem Lesen von Büchern, Blocks und Beiträgen hinter mir habe, ist es nun an der Zeit, um mit dem Coden zu beginnen. Kurz gesagt ich komme aus der Microsoft FoxPro Ecke und steige nun auf C# um.

Ziel für mich ist ein kleines Framework, indem ich grundlegende Dinge vereinfachen möchte. Der Kern des Framework sollen ausschließlich Class Libraries bilden, da die Ausgabe der Daten später unabhängig von der GUI Technik (WinForms, WPF, Silverlight...) erfolgen soll.

Das wichtigste Augenmerk, ist für mich die Flexibilität bezgl. den Datenbanken. So möchte ich nach und nach nicht nur auf MS SQL, sondern auch auf mySQL, Orcacle und MS Compact zugreifen können. Zu Beginn gebe ich mich allerdings mit MS SQL zufrieden.

Nun ist es mit dem Studio ja ganz einfach eine Datenbank und die passenden Forms und Controls zusammen zu klicken. Diesen Weg möchte ich allerdings nicht gehen, da das Framework lediglich die Class Libraries zur Verführung stellen soll.

Nun habe ich eine kleine Testdatenbank auf dem Server erzeugt. Die Struktur der Tabellen habe ich in einer XML File gespeichert und die Tabellen auf dem SQL Server lasse ich per SqlCommand. ExecuteNonQuery erstellen. Das klappt schon mal hervorragend.

Nun möchte ich eine Klasse erstellen, die die Verbindung zu dem Server aufbaut und die Daten bereit stellt, die Daten bearbeiten lässt (also später im GUI, bzw. Business Schicht) und wieder zurückschreibt. Da dieser einer der wichtigsten Schritte im meinem Framework werden wird. Würden mich (als C# Einsteiger) Eure Tipps und Tricks zu den diversen Technologien (ADO, EntityFW, O/R Mapper) interessieren und wie ihr diese Schnittstelle realisieren würdet.

Immer unter dem Gesichtspunkt, dass dazu eben noch die Anbindung an andere DBs realisieren möchte.

Vielen Dank,
Manuel

3.003 Beiträge seit 2006
vor 14 Jahren

Klingt sehr danach, dass du einen O/R-Mapper haben möchtest. Da bleibt dir dann eben die Auswahl zwischen EF, NHibernate und Konsorten.

Ich habe mit EF und verschiedenen DBMS sehr gute Erfahrungen gemacht. (sowohl mit dem Binden eines Modells an verschiedene DBMS, als auch mit dem Datentransfer zwischen Kontexten verschiedener DBMS.)

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Wie hoch würdet ihr denn den zeitlichen Aufwand schätzen, wenn man seinen eigenen Mapper schreiben möchte?

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo manullino

Wenn du handelsübliche Features möchtest, sehr hoch.
Wieso kommst du überhaupt auf diese Idee?

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Hallo Peter,

da ich diese Schnittstelle fuer mehere Datenbanken (bzw. Mapper, wie ihr es bei .NET nennt) schon unter FoxPro selbst entwicklet habe, bin ich eigentlich davon ausgegangen dies wieder zu tun.
Fuer mich ist es wichtig, nicht schnell irgendetwas auf die Fuesse zu stellen. Ich moechte auch wissen, wie das im Hintegrund funktioniert. Wenn ich das dann selbst mach, habe ich eben das beste Gefuehl, bin flexible und habe auch noch einiges gelernt.

Gruesse,
Manuel

5.941 Beiträge seit 2005
vor 14 Jahren

Hoi Manuel

Diese Sparte ist überall als OR / Mapper bekannt, so auch bspw. in Java.

Du kannst dir ohne Probleme einen OR / Mapper selber schreiben. Es gibt dabei jedoch erhebliche Nachteile.
An bekannten Produkten wie bspw. NHibernate arbeiten X Entwickler schon Jahre und sind immer noch dran.

Das heisst, du brauchst sehr viel Zeit und Wissen, um ein annähernd gutes Ergebnis zu bekommen.

Du brauchst auch mit der Nutzung eines schon bestehenden Frameworks nicht "schnell schnell" was auf die Füsse zu stellen, es gibt auch dabei genug zu lernen 😃
Wissen wie das im Hintergrund funktioniert kannst du auch bei fertigen Produkten, wenn sie den Quelltext offen gelegt haben, was bei vielen der Fall ist.

Der letzte Punkt wäre auch der einzige der mich dazu animieren würde, sowas selber zu schreiben.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Angenommen, ich haette gaaaanz viel Zeit und wuerde ich auch die auftretenden Probleme in Kauf nehmen. 😉

Wie gehe ich vor?
Welche Techniken sollte ich verwenden?

Ganz unten sind meine Datenbanken (MS SQL, mySQL, Oracle, MS Compact).
Fuer jede Datenbank schreibe ich eine Schnittstelle, die die Verbindung aufbaut und die Daten bereitsstellt.

Wie stelle ich die Daten dann korrekt bereit? In einem DataTable oder erzeuge ich fuer jede Tabelle eine Klasse, die wiederum die Tabellen/Felder zur Verfuegung stellt?

Danke,
Manuel

5.941 Beiträge seit 2005
vor 14 Jahren

Hallo Manuel

Ganz so einfach ist das nicht 😃
Das was du ansatzweise beschreibst ist die manuelle Vorgehensweise um eine Abstraktion zum Datenprovider zu ermöglichen.
Ein OR / Mapper nimmt dir genau diese Arbeit ab und hilft dir deinen Fokus auf das wirklich wichtige zu richten.

Ein OR / Mapper hat viel mehr auf sich als nur das simple weitergeben von Daten in einer anderen Struktur.
Am besten liest du dich ein wenig in die Thematik ein, wenn es dich interessiert.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Hallo Peter,

momentan wuerde ich mich mit der "simplen Weitergabe der Daten" aus mehreren Datenbanken schon zufrieden geben. (wie ich auch im Eroeffnungsbeitrag geschrieben habe)

Dann ist ein Mapper wohl doch einen Nummer zu gross fuer mein Anliegen. 🤔
Vielleicht weisst du (oder jemand anderes aus dem Forum) eine Quelle, am besten mit Samples, wie ich eine Abstraktion zum Datenprovider erstellen kann.

Das wuede ungemein helfen. Vielleicht faellt ja dann endlich der Groschen... =)

Danke,
Manuel

F
10.010 Beiträge seit 2004
vor 14 Jahren

Such auf codeplex.com mal nach fluentADO, viel "weniger" Mapper geht schon fast nicht mehr.

Aber warum?
Du hast doch schon genug damit zu tun dich von Foxpro auf C# umzugewöhnen,
warum willst Du dann soetwas selber machen, statt NHibernate ( oder ActiveRecord )
oder Entity Framework zu benutzen?

Oder hast Du auch ein NIH Syndrom?

manullino Themenstarter:in
371 Beiträge seit 2008
vor 14 Jahren

Hallo FZelle,

vielen Dank fuer den Link, das Projekt schaut sehr interessant und hilfreich aus!

Danke,
Manuel

M
110 Beiträge seit 2007
vor 14 Jahren

Ein eigener O/R Mapper macht aus meiner Sicht nur Sinn, wenn Wert auf etwas gelegt wird, was andere Mapper bisher nicht können, oder nicht ihren Fokus darauf gelegt haben.

Ich selber habe einen O/R Mapper geschrieben. Mein Fokus war etwas, was z.B. NHibernate nicht konnte. Ich wollte Code generieren und in die IDE integriert sein, mit einem vernüftigen UI.

Heute gibt es aus meiner Sicht genügend Mapper, dass es nicht nötig ist, einen weiteren zu entwicklen. Vor allem sind die meisten Mapper lizenzkostenfrei. Selbst Microsoft hat mit LINQ und dem Entity-Fraemwork etwas tolles entwickelt.

Du solltest vielleicht nicht die Zeit investieren, einen eigenen Mapper zu schreiben, sondern vielmehr vorhandene Mapper bewerten und die richtigen Einsatzgebiete herausfinden.

Gruss

Mirko

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