Laden...

Was ist besser: LINQ to SQL - Klasse oder ADO.NET Entity Data Model

Erstellt von m.grauber vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.488 Views
M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren
Was ist besser: LINQ to SQL - Klasse oder ADO.NET Entity Data Model

Liebe Experten,

ich habe mich soeben mit den LINQ to SQL - Klassen angefreundet (DBML-Dateien und grafischer Designer). Nun habe ich entdeckt, dass ein Zugriff über das ADO.NET Entity Data Model in ähnlicher Weise möglich ist. Beide arbeiten ja mit Entitäten.

  • Wo ist denn der Unterschied zwischen beiden? (ich habe dazu nichts gefunden)
  • Was ist zukunftssicherer?
  • Was ist schneller?
  • Was ist einfacher zu "handeln" (z. B. bei Änderungen der SQL-Datenbanken (z.B. Feldänderungen)
  • Mit welchen der beiden Möglichkeiten arbeitet die Mehrheit der C# Entwickler (die eine der beiden Methoden einsetzen)?
  • Am liebsten würde ich immer nur für den Abfragezeitraum die Verbindung aufbauen, abfragen und dann schließen. Auch bei Änderungen direkt vorher Verbindung öffnen, ändern und schließen. Die bei der letzten Verbindung eingelesenen Daten müssen auch nach dem Trennen der Verbindung und dem neuen Aufbauen der Verbindung z.B. per SubmitChanges geändert werden können.
  • Die Verbindung (Connection) sollte auch optional per IP-Adresse (und notfalls übers Internet) möglich sein.

Genutzt werden soll alles mit:

  • SQL-Server 2000-2008 bzw. SQL-Server Compact
  • Netzwerkbetrieb mit bis zu 20 Arbeitsplätzen
  • Programmierung unter VS 2010, C#, WPF, Nutzung von DataGrid und DataBinding

Danke vielmals!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

"Was ist besser"-Fragen sind meist subjektiv zu beantworten 😉

Wo ist denn der Unterschied zwischen beiden? (ich habe dazu nichts gefunden)

Da findet sich schon einiges -> guckst du hier

Im obigen Link werden auch die anderen Fragen behandelt.

Was ist zukunftssicherer?

LINQ to SQL wird nicht mehr weiterentwickelt, bleibt aber im Framework enthalten. Daher ist das EF zukunftsicherer denn dies wird weiterentwickelt.

Die Verbindung (Connection) sollte auch optional per IP-Adresse (und notfalls übers Internet) möglich sein.

Die Verbindung wird über den Connectionstring angegeben - unabhängig von der Technologie.

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

M
m.grauber Themenstarter:in
343 Beiträge seit 2010
vor 13 Jahren

Hallo Gü,

danke für Deine schnelle Antwort! Ich hatte bereits gegoogled, aber das "versus" hats wirklich gebracht!

Somit habe ich mich nun mit EF beschäftigt und hoffe zukünftig nicht gleich wieder umsatteln zu müssen.

Ich versuche nun den Connection String nicht über die app.config (dort ausdokumentiert), sondern direkt im Code vor jeder Lese- oder Schreibaktion einzusetzen.

Ich hoffe, das es dann möglich ist, die Verbindung zu öffnen > Daten auszulesen + Verbindung sofort danach zu schließen (Werte sollen im WPF-Fenster weiterhin angezeigt werden aber Datenbank könnte jetzt theoretisch offline geschalten werden) > Verbindung wieder zu öffnen und die geänderten Daten z. B. per SaveChanges() in die Datenbank zu übernehmen + Verbindung sofort danach zu schließen.

Ich weiß nicht, ob es möglich ist, die Werte überhaupt nach dem "Verbindungsabbruch" zu ändern oder ob dann ein Fehler kommt? - Ich möchte die Verbindung trotzdem nicht offen lassen. Geht das?

Falls ja habe ich schon hier Probleme:

Leider klappt das nicht ganz - was ist daran falsch?:
EntityConnection conn = new EntityConnection("name=XYModel")
// hier gibt es umfangreiche Möglichkeiten mit using(EntityConnection XYModel = new EntityConnection(entityBuilder.ToString())) und einem anschließendem Block die aber bei mir auch nicht funktionieren

Hier möchte ich hin und folgende Zeilen klappen auch (bei Weg über app.config):
XYEntities dataEntities = new XYEntities();
ObjectQuery<Kunde> Adresse = dataEntities.Kunde;

Danach Verbindung schließen:
XYEntities.Connection.Close();
XYEntities.Connection.Dispose();

Nochmals tausend Dank!

Mfg
Michael

PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!

:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]