Frage

Ich bin Linq Welt neu und erforschen es zur Zeit. Ich denke darüber in meinem nächsten Projekt verwenden, die Datenbank-Interaktion beinhaltet.

Von was ich gelesen habe, ich denke, es gibt zwei verschiedene Möglichkeiten, um mit Datenbanken zu interagieren:

  • Linq to SQL
  • Linq to DataSet

Jetzt das Produkt, das ich auf arbeiten, kann nicht von der Art der Datenbank verlassen. Zum Beispiel könnte es mit SQL Server / Oracle eingesetzt werden.

Nun meine Fragen sind:

  1. Wenn ich Linq to SQL verwenden, bin ich nur mit SQL Server fest?
  2. Ich glaube, ich Linq to DataSet sowohl für SQL Server und Oracle verwenden können. Aber werde ich verlieren etwas (einfache Programmierung, Leistung, Zuverlässigkeit usw.), wenn ich Linq to DataSet für SQL Server (im Vergleich zu Linq offcourse to SQL).
War es hilfreich?

Lösung

Sie sind richtig über 1 # - LINQ to SQL wird nur funktionieren, gegen SQL Server-Datenbanken.

würde ich mit dem ADO Entity Framework gehen, wenn Sie die Möglichkeit haben möchten, unterschiedliche Datenquellen zugreifen (verschiedene Anbieter verwenden). Sie erhalten eine ähnliche Flexibilität in Bezug auf die POCO-ähnliche Einheiten verwendet, und es ist ganz einfach, für fortgeschrittenere / komplexe Implementierungen zu erweitern.

Auf meinem aktuellen Projekt verwenden wir Linq zu Sql und es war in Ordnung, aber wir haben eine Reihe von Problemen zu überwinden hatte. Ich habe es ein wenig zu einfach manchmal in Bezug auf Erweiterbarkeit gefunden. Ich schrieb eine (besser) Antwort in Bezug auf LINQ to SQL und Entity Framework hier .

Bezüglich 2 # in Frage - ich bin nicht sicher, würde ich wieder in Datasets gehen mögen. IMHO sind sie eher eine Sache der Vergangenheit, können aber nützlich sein, wenn man ein anständiges Toolkit mit spezifischen Kontrollen (wie Infragistics) hat. Allerdings finde ich ihre Overhead zu teuer für die schnelle Transaktionssysteme. Die Umsetzung hat nicht die Hälfte der Funktionalität von LINQ to SQL oder Entity Framework.

Andere Tipps

Um Ihre erste Frage zu beantworten: Nein, es gibt auch andere Implementierungen von Linq-Provider für Oracle, zum Beispiel:

LinqToOracle

DbLinq

Die letztere mehr Datenbanken unterstützen, wie SqLite.

Kasse auch die ADO.NET Entity Framework .

  1. Ja, es ist nur SQL Server. Darüber hinaus hat Microsoft L2S eingefroren und wird es nicht weiter verfeinern. Aber es ist ein guter Rahmen, führt wirklich gut und ist einfach zu bedienen.
  2. Linq zum Datensatz zugreift Datensätze als enumerables nachdem Daten aus der DB geholt worden. Linq to SQL verwendet eine IQueriable tatsächlich dynamische SQL-Abfragen zu erstellen. In vielen Fällen wird ausführen L2S viel besser, und Sie speichern die DB-Code überhaupt zu schreiben.

Sie sollten Entities Blick in Linq. Das ist der ausgewachsene Rahmen zur Verfügung. Gerade jetzt, es ist in erster Linie für SQL Server, aber Sie werden Unterstützung für Oracle usw. in der Zeit haben.

  1. Sie sind nicht mit SQL Server nur stecken. Theoretisch können Sie einen Linq-Anbieter für jede Datenbank aufzubauen. Es gibt ein Projekt auf Codeplex für Linq to Oracle http://www.codeplex.com/LinqToOracle . Ich habe es selbst nicht ausprobiert.

  2. Wie werden Sie die Daten in den Datensatz bekommen? Ich glaube nicht, dass Sie eine ganze Tabelle in einen Datensatz holen gehen? Das wäre ein ernsthaftes Performance-Problem sein. Wenn Sie verwenden Linq wollen Dataset müssen Sie schreiben alle SQL sich die Daten aus der Datenbank zu erhalten abfragt, anstatt dass Linq die SQL-Abfragen erstellen. So werden Sie tatsächlich muss zuerst die Datenbank abfragen und dann den Datensatz abfragen. Scheint, wie doppelte Arbeit für mich ...

Wenn Sie Linq to SQL verwenden, dann würden Sie ziemlich viel mit SQL Server stecken, soweit ich weiß.

Wenn Sie Linq to DataSet verwenden, werden Sie ein wenig einfache Programmierung verlieren: Mit Linq, können Sie die Linq Entitäten direkt verwenden, während mit Datasets, müssen Sie den Dataset-Namen weiterhin verwenden (MyDataSet.Entity = new MyDataSet .Entity ()), die nach einer Weile alt wird. Ich denke, das ist das einzige Opfer.

Sie können jedoch mit zum Beispiel verwenden Oracle (tat das an einem Projekt). Es ist auch ziemlich Drag-and-Drop mit ein bisschen mehr Kontrolle über die Dataadapter (soweit ich weiß - ich habe noch nie zwicken Linq-to-SQL, die viel hatte), können Sie (zB) angeben, die verwenden, um Abfragen zu etc.

Da Sie noch Beziehungen zwischen Tabellen in Datasets definieren können, können Sie immer noch gut genug verwenden Linq, so dass Sie nicht wirklich Probleme dort sehen werden.

Ich gehe davon aus, dass die Zuverlässigkeit so gut mit Linq-to-Dataset ist wie mit Linq-to-SQL (nie Probleme hatte), Leistung schien gut genug zu sein, nie wirklich Profil könnte, though.

Sie sind nicht nur für SQL Server fest. Wir bieten LINQ to SQL-Implementierungen für Oracle, MySQL, PostgreSQL und SQLite-Servern. Mehr Informationen hier Datasets sind nicht so bequem im Vergleich zu LINQ to SQL-Technologie. Überprüfen Sie die Entity Framework-Option als Alternative aus. Sie können mehrere Speichermodelle mit einem konzeptionellen Modell schreiben und dann SQL Server und Oracle Datenbank parallel verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top