Laden...

Application <-> Database (Auswahlhilfe)

Erstellt von realProg vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.823 Views
R
realProg Themenstarter:in
95 Beiträge seit 2010
vor 13 Jahren
Application <-> Database (Auswahlhilfe)

verwendetes Datenbanksystem: SQL SERVER 2005/2008 (noch nicht sicher)

Hallo Leute,

ich benötige euren Rat.
Ich bin dabei eine Applikation zu programmieren, die laufend mit einer Datenbank kommuniziert (mein ersters in dieser Art).
Meine Frage: Wie soll ich am besten auf die Datenbank zugreiffen? Direkt mit SQL Befehlen; unter Verwendung von LINQ, Hypernate? Was sind hier gute Strategien? Es sollte alles so einfach und logisch wie möglich sein. Wo geht hier der Trend hin?

Danke im Voraus!

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Hypernate

Du meinst wohl Hibernate bzw. für .net NHibernate 😉

Wie soll ich am besten auf die Datenbank zugreiffen? Direkt mit SQL Befehlen;

Ich würds mittels O/R-Mapper machen da diese dir viel von der Routinetätigkeit abnehmen und intern schon als Unit Of Work implementiert sind.

unter Verwendung von LINQ

LINQ hat mit Datenbank erstmals nichts zu tun. Das ist ein "Sprachfeature" von C#.
Das wird aber oft mit LINQ to SQL gleichgesetzt was nicht korrekt ist. LINQ to SQL ist ein O/R-Mapper und die gemappten Objekte können per LINQ "befragt" werden.

Was sind hier gute Strategien?

I.d.R. O/R-Mapper. Schau dir dazu auch Repository an.

Wo geht hier der Trend hin?

Wenns nach Mircosoft geht dann zum ADO.net Entity Framework. Aber suche mal im Forum danach und dann kannst du ja Anhand der Anzahl der Treffer zu den verschiedenen Technologien einen Trend erahnen.

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!"

R
realProg Themenstarter:in
95 Beiträge seit 2010
vor 13 Jahren

Hallo, und danke für deine Antwort.
Natürlich meinte ich hibernate, im speziellen NHibernate 😉

Ich bin mir noch nicht sicher, ob ich das Prinzip richtig verstanden habe, bitte korrigier oder ergänze mich:

Hibernate dient dazu, die relationalen Daten in Objekte zu wrappen, die ich dann in meiner Application auslesen/erzeugen/verändern kann. Dazu mappe ich die Entities aus meiner DB auf Strukturen, mit denen ich dann arbeite.
Ist es damit zB auch möglich, dass ich wenn ich zB ein neues Objekt Person angelegt habe dies automatisch in die Datenbank geschrieben wird, oder sind dafür weitere Schritte nötig?

Ist Linq to sql mit hibernate vergleichbar oder sind das zwei verschiedene Paar Schuhe?
Kann man NHibernate empfehlen oder gibt es einfachere/bessere Mapper?

I
1.739 Beiträge seit 2005
vor 13 Jahren

Hmm, am besten mit Delphi, VB 6, Access-Frontend oä.
Was meinst du mit laufend?
Schön das du Abstraktionshilfen für .Net benennst. Brauchst du die überhaupt? Gehen die überhaupt/da asynchron?
Was soll das denn werden mit deinen Zugriffen?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Hibernate dient dazu, die relationalen Daten in Objekte zu wrappen, die ich dann in meiner Application auslesen/erzeugen/verändern kann. Dazu mappe ich die Entities aus meiner DB auf Strukturen, mit denen ich dann arbeite.

Wenn du wrappen durch mappen und Strukturen nicht als struct meinst hast du es verstanden 😉

Ist es damit zB auch möglich, dass ich wenn ich zB ein neues Objekt Person angelegt habe dies automatisch in die Datenbank geschrieben wird, oder sind dafür weitere Schritte nötig?

Wenn du das CLR-Objekt Person erstellst (entweder per new oder über eine Fabrik) so ist das nur im Speicher der Anwendung. Dem O/R-Mapper (bzw. exakter dessen Unit of Work) muss diesen Objekt dann noch hinzugefügt werden. Wie es hinzugefügt wird hängt vom konkreten O/R-Mapper ab, aber grob gesagt per Add-Methode. Damit die Änderungen auch in die DB gelangen muss noch ein Save aufgerufen werden. Aber die nötigen Schritte findest du in der Doku des jeweiligen O/R-Mappers.

Ist Linq to sql mit hibernate vergleichbar oder sind das zwei verschiedene Paar Schuhe?

Vom Konezpt des O/R sind sie gleich, sonst gibts schon Unterschiede. Welche genau kann ich dir nicht sagen da ich NHibernate zu wenig kenne um Verlgeiche mit anderen zu ziehen.

Kann man NHibernate empfehlen oder gibt es einfachere/bessere Mapper?

Hier beginnt auch eine Glaubensfrage. Jeden den du fragst wird dir vermutlich etwas anderes nahe legen 😉
Ich verwende Linq2Sql. Weils der 1. O/R-Mapper den ich kennen lernte und bis heute genügt er meinen Anforderungen.
Über ein paar andere könnte ich zwar auch noch was schreiben, aber das spare ich mir denn a) du musst dir selbst einen auswählen und zwar so dass er deinen Anforderungen genügt b) es sonst in eine (ewige) Diskussion über die Vor-/Nachteile ausarten könnte 😉 c) ich nicht überall genügend weiß um wirklich eine fairen Vergleich zu ziehen.

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!"

I
1.739 Beiträge seit 2005
vor 13 Jahren

Blödsinnigerweise ist vielleicht kein Mapper gefragt.
Doch wer achtet schon noch auf die Frage...

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo ikaros,

welche "Frage" meinst du? Jene von realProg fragt ja konkret nach einem Mapper. Deine 4 Fragen kann auch nur realProg beantworten.

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!"

I
1.739 Beiträge seit 2005
vor 13 Jahren
Kiss

Die Frage steht da(op).

Hallo Leute,

ich benötige euren Rat.
Ich bin dabei eine Applikation zu programmieren, die laufend mit einer Datenbank kommuniziert (mein ersters in dieser Art).
Meine Frage: Wie soll ich am besten auf die Datenbank zugreiffen?

Dann folgt das mit den Mappern...

Wie Laufend? Mit den Mappern geht das schon mal nicht weil sie auf Ado.Net aufsetzen.
Notifkationservices sind speziell...
Mapper: Wozu?
Ist nicht wirklich gefragt. Da laufende Kommunikation gefragt ist.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo ikaros,

du hast schon den ganzen OP gelesen und dabei berücksichtigt dass es sich um sein erstes dieser Art handelt?

Meine Frage: Wie soll ich am besten auf die Datenbank zugreiffen? Direkt mit SQL Befehlen; unter Verwendung von LINQ, Hypernate? Was sind hier gute Strategien? Es sollte alles so einfach und logisch wie möglich sein. Wo geht hier der Trend hin?

Gefragt ist konkret nachdem wie auf die DB zugegriffen werden soll. Das "laufend" ist (für mich) eine unglücklich gewählter Ausdruck an dem du dich nicht aufhängen solltest.

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!"

I
1.739 Beiträge seit 2005
vor 13 Jahren

du hast schon den ganzen OP gelesen und dabei berücksichtigt dass es sich um sein erstes dieser Art handelt?

Ja. Genau deshalb.

Gefragt ist konkret nachdem wie auf die DB zugegriffen werden soll. Das "laufend" ist (für mich) eine unglücklich gewählter Ausdruck an dem du dich nicht aufhängen solltest.

Gefragt wäre Imho deshalb weniger der Verweis auf Abstraktionen, wie diese Layer.
Gefragt wäre für mich was anderes- Also zB. quasiexklusiver Zugriff auf Indizes. O.so. Möglicherweise geht es aber auch um anderes...
Wir wissen es nicht.

R
realProg Themenstarter:in
95 Beiträge seit 2010
vor 13 Jahren

Hallo,

danke für die Beantwortungen =)
Sorry, dass ich mich etwas schlecht ausgedrückt habe, aber das laufend war etwas übertrieben.
Da es mein erstes Projekt dieser Art ist.
Ich wollte wissen, wie ihr es macht, bzw. was empfohlen werden kann.
Über die Möglichkeiten muss ich mich selber dann informieren, aber Anhaltspunke können mir dabei helfen.

Für mich wäre ein logischer Ablauf, dass ich die Daten aus der DB mit Strukturen in meiner Applikation verknüpfe, dann einfach erstellen/bearbeiten und wieder einfach in der Datenbank ablegen kann.
Auf (N)Hibernet bin ich zB gekommen, da es vl. für späteres arbeiten mit Java hilfreich sein kann.

Durch den Beitrag von gfoidl werde ich mir aber auch LinQ2SQL näher anschauen.