Laden...

bestway - objekte aus datenbank laden

Erstellt von Michael Schuler vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.360 Views
M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren
bestway - objekte aus datenbank laden

Hallo Community

Ich hätte da so eine Frage: Wie ladet ihr die Daten aus der Datenbank, um sie in Objekte abzufüllen?
Ich erstelle immer einen SQLCommand, daraus einen DataReader. Danach loope ich mit dr.Read() durch die Daten und erstelle mir meine Objekte, fülle Sie in eine ArrayList und gebe diese zurück. Miest gebe ich dann allerdings ein Array zurück, wandle es also noch vorher um.

Wie macht ihr das? Was könnte ich ändern?

--

Wenn ihr viele Daten auf einmal anzeigen müsst, nehmt ich ein DataGrid? (Forms programmierung...)
Ich finde DataGrids irgendwie hässlich und versuche ohne sie auszukommen, dann nehme ich meist Listview, da ich ja mehrere spalten brauche. Doch eine Listview kann man nicht ändern! 🙁 ausser ausserhalb der listview natürlich...

wie löst ihr solche probleme?

Danke für eure Vorschläge
Michael

N
4.644 Beiträge seit 2004
vor 18 Jahren

Wir nutzen einen O/R Mapper.
Als Control mitunter das ASP.NET 2.0 GridView ( ist ziemlich gut ).

S
8.746 Beiträge seit 2005
vor 18 Jahren

Wenn du keine O/R-Mappern einsetzen magst (wozu ich auch raten würde), dann kannst du mal nach dem DOA-Pattern googlen. Vielleicht bringt dich das weiter.

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

O/R Mapper kenne ich noch keine, könnt ihr mir einen empfehlen? Wie ist ihre Funktionsweise?
Danke erstmal...
Michael

210 Beiträge seit 2005
vor 18 Jahren

Original von svenson
Wenn du keine O/R-Mappern einsetzen magst (wozu ich auch raten würde)

Warum? Man spart dadurch nen Haufen Code.

Blog

Portable WebDAV Library

Windows Server Advanced Power Management
Erweitertes Energie-Management unter Windows

S
8.746 Beiträge seit 2005
vor 18 Jahren

Sorry, blöd ausgedrückt: Ich rate AUSDRÜCKLICH zum Einsatz von O/R-Mappern oder gar zu OO-Dbs!

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Ich fand den NHibernate als einzige Opensourcelösung. Könnt ihr den empfehlen? Oder wenn ihr von diesem abraten würdet, welcher wäre sein Geld wert? LLBLGen oder Alachisoft habe ich mir kurz angeschaut, weiss nur leider nicht auf was ich achten muss um zu beurteilen...

Thx
Michael

P
939 Beiträge seit 2003
vor 18 Jahren

Dieser Thread:

Original von svenson
Wenn du keine O/R-Mappern einsetzen magst (wozu ich auch raten würde) ..

Thread: Architekturproblem

Original von svenson
Das ist der typische Gap zwischen Objektentwicklung und relationaler Modellierung. Letztere ist weniger mächtig, d.h. man muss im Code "drumrumfrickeln".

[..]

Alles in allem eine totale Krücke, bei der sich mit die Haare hochstellen, aber es gibt schlicht keine Alternative, außer Oracle oder eine OO- oder XML-Datenbank einzusetzen.

Was soll man dazu sagen? Ich würd mal sagen, selbst schuld.

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Original von Pulpapex
Was soll man dazu sagen? Ich würd mal sagen, selbst schuld.

Werde ich nicht mal dementieren, hast du absolut recht...

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von michaelschuler
O/R Mapper kenne ich noch keine, könnt ihr mir einen empfehlen? Wie ist ihre Michael

O/R-Mapper sind die "Mittler" zwischen den beiden an sich völlig verschiedenen Welten OO und relationale DBs. Sie erlauben es Objekte einfach zu speichern und zu laden, ohne dass man überhaupt mit Tabellen, SQL-Abfragen oder was weiss ich in Verbindung kommt.

Im Prinzip gestaltet sich die Nutzung eines O/R-Mappers ähnlich wie bei einer Objekt-Datenbanken, nur ist der "Backend" noch relational.

Was ist zu tun: Man muss eine Abbildungsvorschrift definieren, wie Objekte in Tabellen abgebildet werden. Teilweise können die O/R-Mapper das automatisiert machen (wenn du ein Objektmodell hast, läßt du dir das DB-Modell einfach generieren).

Schwieriger ist der umgekehrte Weg (du hast eine relationales Datenmodell, willst aber objektorientiert damit arbeiten), hier müssen die Abbildungsvorschriften per Hand (meist in XML-Form) definiert werden, bzw. der Code wird entsprechend mit Attributen ausgezeichnet.

Einer der bekanntesten Freeware-O/R-Mapper ist NHibernate (kommt ursprünglich aus der Java-Welt). Gibt auch diverse kommerzielle Produkte, der Markt ist hier recht gross. Selbst MS wollte einen für .NET 2.0 machen, hats aber nicht hinbekommen. 🙂

Der Vorteil der Geschichte ist: ADO.NET-Code ist extrem geschwätzig. Wofür du mit ADO.NET ganze Seiten von Code brauchst, kannst du hier mit ein paar Zeilen erledigen. Die Produktivität der Entwicklung steigt mit O/R-Mappern ENORM an.

Sie bieten sich vor allem dort an, wo du ein kompexes Datenmodell hast. Wenn es nur darum ein paar Felder einer Tabelle in ein Grid zu laden, ist ADO.NET besser, wenns richtig kompliziert wird (mit vielen Beziehungen), dann ist O/R bzw. rein OO der bessere Weg. Ein Nachteil kann die u.U. etwas geringere Performance sein.

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von Pulpapex

Alles in allem eine totale Krücke, bei der sich mit die Haare hochstellen, aber es gibt schlicht keine Alternative, außer Oracle oder eine OO- oder XML-Datenbank einzusetzen.

Was soll man dazu sagen? Ich würd mal sagen, selbst schuld.

Interessante Aussage, ohne den Projekthintergrund zu kennnen.... 🙂

Es beginnt mit Anforderungen, die sich im Laufe der Zeit mächtig ausdehnen und auf einmal hast du solche Probleme wie dynamische Datenmodell. Dann hast du ein Management, das OO-Datenbanken gerademal aus der Zeitschrift kennt, den Nutzen nicht erkennen kann und nicht bereit ist, die Mehrkosten als Investition zu begreifen. Die Jungs meinen sogar, C sei immer noch das beste an Programmiersprache (schlecht wenn Chefs mal selbst Entwickler waren....).

Und wenn dann die Frage kommt: Gehts auch mit SQL-Server und du nicht eine knallharte Begründung hast warum NICHT (die zu dem Zeitpunkt nicht bestand), dann hast du ein Problem.

Aber vielleicht hast du ja eine geniale Idee, wie du mich aus meinem Problemn befreien kannst....

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von michaelschuler

Original von Pulpapex
Was soll man dazu sagen? Ich würd mal sagen, selbst schuld.

Werde ich nicht mal dementieren, hast du absolut recht...

Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von michaelschuler
LLBLGen oder Alachisoft habe ich mir kurz angeschaut, weiss nur leider nicht auf was ich achten muss um zu beurteilen...
Michael

Ich hab in einem älteren Projekt mal die Freeware-Version von LLBGen eingesetzt. Der generierte Code ist gut strukturiert und implementiert, aber es wurden keine Beziehungen generiert. Ich denke aber, die kommerzielle Version hat das drauf.

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Ich habe schon gemerkt, dass man mit relationalen Datenbanken bald mal an grenzen stösst, doch kannte ich bis anhin nichts anderes. Ich werde mir O/R Mapper mal anschauen...
Wie ging das mit OO-DB's nochmal? Es fällt mir schwer mir darunter etwas vorzustellen. Habe ich da auch ein Protokoll like SQL? Oder ist es etwa ähnlich wie wenn ich eine arraylist serialisiere? ?(

LG Michael

N
4.644 Beiträge seit 2004
vor 18 Jahren

Original von svenson
Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

Dich zwingt doch keiner, oder?
Außerdem, was soll das, kannst Du etwa keine Kritik vertragen? Ist alles was Du sagst Gesetz und somit richtig?

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Original von Noodles

Original von svenson
Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

Dich zwingt doch keiner, oder?
Außerdem, was soll das, kannst Du etwa keine Kritik vertragen? Ist alles was Du sagst Gesetz und somit richtig?

Bitte jetzt nicht streiten, ist ein Missverständnis...

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von Noodles

Original von svenson
Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

Dich zwingt doch keiner, oder?
Außerdem, was soll das, kannst Du etwa keine Kritik vertragen? Ist alles was Du sagst Gesetz und somit richtig?

??? Was hat denn bitte der Ausspruch "selber schuld" mit Kritik zu tun?

Ich hätte mich sehr gefreut, wenn gekommen wäre: "Mensch, das ist ne schlechte Lösung, das hättest du doch so oder so besser machen können", aber "selbst schuld" ? Was soll ich damit anfangen?

Ich erzähle von meinen Problem mit SQL-Datenmodellierung und dass ich mit meiner eigenen Lösung total unzufrieden bin. Wieso gibt das jemandem das Recht mir solche Dinge an den Kopf zu werfen. Würdest du dich freuen, wenn ich bei deinem nächsten Problem nur ein lapidares "Selbst schuld..." oder "Von nix kommt nix" ablasse? Was würdest du dann von mir halten?

Wenn es sich hier nur um ein Mißverständnis durch meinen ursprüngliches, etwas verquer formuliertes Posting handelt, dann vergessen und vergeben, aber so?

Wäre nett, wenn Pulpa das mal aufklärt....

Ansonsten Noodles, dein Ton war daneben....

S
8.746 Beiträge seit 2005
vor 18 Jahren

Original von michaelschuler
Wie ging das mit OO-DB's nochmal? Es fällt mir schwer mir darunter etwas vorzustellen. Habe ich da auch ein Protokoll like SQL? Oder ist es etwa ähnlich wie wenn ich eine arraylist serialisiere? ?(
LG Michael

Eigentlich sogar noch einfacher. 🙂

Schau mal auf die Seite von Versant (ich hoffe mich bezichtigt jetzt keiner der Werbung, aber ich find das Teil nunmal Spitze) und lade dir mal die Trial-Version von FastObject.NET runter (ich glaube die haben auch ein White-Paper wo die Nutzung erläutert wird).

Eigentlich hat man nur Methoden um Objekte (man muss die als DB-Objekte durch Attribute markieren) aus einer DB rauszuholen. Wenn du die Objekte dann veränderst werden die automatisch wieder in die DB zurückgeschrieben (zugegebenermassen sehr vereinfacht).

Um an Objekte ranzukommen gibt es zwei Wege: Entweder per Abfrage (allerdings deutlich einfacher und logischer als SQL, weil direkt mit Objekt-Notation gearbeitet wird und das SQL-Mapping entfällt) oder per "Root-Objekt", so eine Art Master-Objekt (kanns mehrere von geben), über das man an alle anderen Objekte erreicht (per Objektbeziehungen), das nennt man dann "Navigation". Es ist häufig (nicht immer) wesentlich einfacher und manchmal auch schneller ein Objekt anzunavigieren als es mit einer Abfrage aus der DB zu prockeln. Abfragen gibt es eher um ganze Collections zu holen. Das Ergebnis ist immer ein Objekt, oder eine Collection von Objekten.

Fast zu einfach um wahr zu sein.... 🙂

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Original von svenson

Original von Noodles

Original von svenson
Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

Dich zwingt doch keiner, oder?
Außerdem, was soll das, kannst Du etwa keine Kritik vertragen? Ist alles was Du sagst Gesetz und somit richtig?

??? Was hat denn bitte der Ausspruch "selber schuld" mit Kritik zu tun?

Ich hätte mich sehr gefreut, wenn gekommen wäre: "Mensch, das ist ne schlechte Lösung, das hättest du doch so oder so besser machen können", aber "selbst schuld" ? Was soll ich damit anfangen?

Ich erzähle von meinen Problem mit SQL-Datenmodellierung und dass ich mit meiner eigenen Lösung total unzufrieden bin. Wieso gibt das jemandem das Recht mir solche Dinge an den Kopf zu werfen. Würdest du dich freuen, wenn ich bei deinem nächsten Problem nur ein lapidares "Selbst schuld..." oder "Von nix kommt nix" ablasse? Was würdest du dann von mir halten?

Wenn es sich hier nur um ein Mißverständnis durch meinen ursprüngliches, etwas verquer formuliertes Posting handelt, dann vergessen und vergeben, aber so?

Wäre nett, wenn Pulpa das mal aufklärt....

Ansonsten Noodles, dein Ton war daneben....

Ich dachte, Pulpapex meinte mich mit "selbst schuld"...

S
8.746 Beiträge seit 2005
vor 18 Jahren

Jo, das hab ich mir jetzt schon gedacht... 🙂

P
939 Beiträge seit 2003
vor 18 Jahren

Ich habe dir eine PM geschrieben. Sowas gehört nicht ins Forum.
Wäre gut, wenn du dich erstmal beruhigst. Vielleicht mal drüber schlafen.

// Edit: ich hab das Theater zwar verbrochen, aber wenn das noch lange so weiter geht, werd ich den Thread hier dicht machen.

S
8.746 Beiträge seit 2005
vor 18 Jahren

Einen besonderen Goodies möchte ich noch loswerden: OO-Dbs bieten fast immer Objekt-Sperren, d.h. du kannst ein oder mehrere Objekte sperren, und wenn jemand anders versuchst zuzugreifen, dann bekommt der sofort ne Fehlermeldung und nicht erst (wie bei ADO.NET), wenn du versuchst das geänderte Objekte/Tabellenzeile zurückzuschreiben.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Zusammen,

Original von svenson

Original von Noodles

Original von svenson
Habt ihr alle nen Rad ab? Ich geb hier meine Erfahrungen preis und werde von euch dafür verarscht. Na vielen Dank!

Dich zwingt doch keiner, oder?
Außerdem, was soll das, kannst Du etwa keine Kritik vertragen? Ist alles was Du sagst Gesetz und somit richtig?
[...]
Ansonsten Noodles, dein Ton war daneben....

Ich bin Deiner Meinung, svenson. Zumindest erwartet man von einem Moderator nicht, dass er noch Öl ins Feuer gießt, denn der Wortbedeutung nach sollte er im Gegenteil sogar mäßigen.

Mal abgesehen davon handelt es sich hier um ein klassisches Missverständnis, was eigentlich leicht ausgeräumt werden können sollte.

herbivore

P
939 Beiträge seit 2003
vor 18 Jahren

Das kann man auch von der anderen Seite sehen. Svenson ist mit "Habt ihr alle ein Rad ab?" unsachlich und persönlich geworden. Das muss man so nicht stehen lassen. Ich finde, da kann schon mal fragen ob jemand keine Kritik versteht. .. Meine Meinung.

Ansonsten war es wirklich eine Verkettung unglücklicher Umstände. Ich hatte nur gelesen, dass svenson nichts von O/R-Mappern hält und mich dazu erinnert wie nach eigener Aussage bei ihm in der Firma Datenbanken "gehandhabt" werden.

Das habe ich nur im Zusammenhang zitiert, wollte es aber nicht weiter kommentieren (weil mich lange, sinnlose Diskussionen, wo von vorneherein klar ist, dass es keinen Konsens geben wird, annerven) und habe nur lax schnell irgendwas dahin geschrieben.

Dass es dann gar nicht so gemeint war, waren wie gesagt sehr unglückliche Verkettungen. Die Reaktion fand ich allerdings nicht sehr gefasst, da kann man auch anders reagieren. Zumal svenson dann Noodles noch vorwirft, sich im Ton vergriffen zu haben.

Gruss
Pulpapex

I
1.739 Beiträge seit 2005
vor 18 Jahren

Mein Senf dazu:
Ein "selbst schuld" empfinde ich als ebenso unsachlich und persönlich. Ich kann verstehen das svenson das so nicht stehen lassen wollte(auch wenn das vermutlich an eine andere Adresse ging). Mein Vorschlag Thread löschen, und aus.

@pulpa: Als Statement fand ich deinen Kommentar daneben("Unglückliche Verkettung" einerseits(für den eigenen Mist) und ein erneuter Angriff andererseits)

M
Michael Schuler Themenstarter:in
329 Beiträge seit 2004
vor 18 Jahren

Original von ikaros
Mein Vorschlag Thread löschen, und aus.

*kreisch* Nein, nur das nicht! Dann muss ich ja alles nochmals fragen 8o

P
939 Beiträge seit 2003
vor 18 Jahren

Na hier wirst du wohl kaum noch ne ordentliche Antwort bekommen. Am besten du stellst deine Frage nochmal im Datenbank-Forum (ADO.NET). Sorry dafür.

402 Beiträge seit 2005
vor 18 Jahren

Gibts es auch eine Zusammenfassung zu diesem Thread? Welcher OR-Mapper hat denn nun das beste Preis-Leistungs-Verhältniss?

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

S
8.746 Beiträge seit 2005
vor 18 Jahren

Mich würde auch mal ein halbwegs aktuelle Übersicht interessieren. Kennt jemand Links oder Artikel wo mal konkret verglichen wird? Gibt ja Lösungen wie Sand am Meer.

402 Beiträge seit 2005
vor 18 Jahren

Vor allen interessieren mich die, die direkt zur DB connecten und nicht über OleDB, OBDC oder anderen Mist. Am besten mit den ADO.NET Klassen des DB Hersteller. Habe mir dafür auch schon meine DB-Klassen gebaut, die dann die entsprechende Wahl treffen! 🙂

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.