Was würden Sie wählen, wenn Sie irgendeine .NET DAL Technologie verwenden könnten?

8

Ich komme nach ein paar Jahren wieder in die .NET-Entwicklung zurück und es scheint, dass gerade jetzt, besonders bei LINQ, die Art, wie Sie auf Ihre Daten zugreifen, sich geändert hat und viel einfacher geworden ist. Zum Beispiel kann ich in einer ASP.NET MVC-Website:

  • Artikel hinzufügen
  • LINQ-zu-SQL-Klassen hinzufügen
  • Ziehen Sie Datenbanktabellen in den relationalen Designer für LINQ-to-SQL-Objekte und klicken Sie auf Speichern
  • Zugriff und Manipulation meiner Daten über LINQ-Einzeiler (was ich hier gelernt habe: Ссылка )

Das sieht gut aus, aber wie real ist es?

  • ist das obige LINQ-to-SQL-Szenario, das Sie in realen Projekten verwenden, oder ist nur eine schnelle Gerüsttechnologie, dh was passiert, wenn Sie anfangen, Felder und Tabellen in Ihrer Datenbank hinzuzufügen, wie LINQ-to -SQL-Klassen bleiben synchron?

Und wie mache ich alle neuen Technologien in diesem Raum sinnvoll, z. B.

  • Wo passt Subsonic?
  • Wo passt Astoria (ADO.NET Data Services)?
  • Wo passt NHibernate?
  • Wie kann ich andere Datenbanken mit LINQ-to-SQL verwenden? (Ich habe versucht, eine SQLite-Tabelle im Object Relational Designer zu ziehen und einen "nicht unterstützten Fehler" oder LINQ-to-SQL nur für SQL Server?
  • funktioniert LINQ-to-XML wie LINQ-to-SQL, z. kann ich XML-Dateien in einen Designer ziehen und dann mit LINQ darauf zugreifen, oder muss ich dafür meinen eigenen Code schreiben?
  • funktioniert LINQ-to-Entities wie LINQ-to-SQL, d. h. automatisch generierte Klassen, aber nur mit mehr Optionen?

  • ist ADO.NET mit seinen DataTables und DataSets eine alte Technologie, die wir jetzt LINQ haben? Ist LINQ-to-ADO.NET sinnvoll?

  • Wo passt Azure, wo Sie nicht wirklich RDBMS haben

  • Wo passt ESB, wenn Ihre Benutzeroberfläche gerade RESTvoll mit WCF kommuniziert oder mit Webdiensten spricht?

Nun, da wir so viele Optionen haben, könnten Sie, wenn Sie eine dieser Technologien für ein Projekt auswählen könnten, welche würden Sie wählen und warum?

    
Edward Tanguay 23.01.2009, 10:09
quelle

4 Antworten

4

Erste Antworten (hauptsächlich auf dem LINQ-Zeug):

  • LINQ to SQL können Sie in realen Projekten verwenden. Ich habe es getan. Wir haben tendenziell den gesamten Datenzugriffscode in der Teilklasse, die generiert wird, wenn Sie mit der rechten Maustaste auf die Entwurfsoberfläche klicken und "Code anzeigen" auswählen, anstatt als Einzeiler im gesamten Code zu verstreuen.
  • Bei LINQ to SQL, wenn Sie die Datenbank ändern, müssen Sie die Tabellen entfernen und erneut hinzufügen. Dies ist ein wenig einschränkend. Mit dem Entity Framework können Sie "Modell von Datenbank aktualisieren" diese Spalten automatisch hinzufügen / entfernen.
  • Es hätte wahrscheinlich LINQ to MSSQL Server heißen sollen - es ist direkt mit SQL Server verbunden. Wenn Sie ähnliche Tools mit anderen Datenquellen verwenden möchten, können Sie sich das Entity Framework ansehen - dies hat jedoch derzeit andere Einschränkungen - LINQ to SQL war so viel wie ein Beweis dafür, dass dies funktionieren könnte.
  • ADO.NET Data Services bieten Ihnen eine REST-basierte Schnittstelle zu Ihren ADO.NET-Objekten - so können Sie einfache Webservices aufrufen, um Daten abzurufen, ohne diese Dienste schreiben zu müssen.
  • Nein, es gibt keine Design-Oberfläche für LINQ to XML - ich nehme an, jemand könnte etwas mit einer XSD machen, aber das wäre interessant;)
  • Sie können sich Azure als "ein Betriebssystem in der Cloud" vorstellen, es verfügt über eine Datenbank für den Speicher, obwohl es, wie Sie sagen, nicht relational ist, es gibt keine Joins, aber Sie werden es immer noch nach Ergebnissen abfragen .

Um Ihre letzte Frage zu beantworten, habe ich nicht genug über NHibernate oder andere gelernt, aber ich würde gerne LINQ to SQL für den grundlegenden Datenbankzugriff verwenden, aber ich habe angefangen, LINQ to Entities for my komplexere Sachen als die anderen - vor allem, weil ich die schönen Bilder mag.

    
Zhaph - Ben Duguid 23.01.2009, 10:35
quelle
1

Was SQLite betrifft: Ich habe dbLinq erfolgreich zum Erstellen von LINQ-Abfragen in einer SQLite-Datenbank verwendet. Es ist immer noch in den Kinderschuhen, also muss ich in den generierten Klassen etwas reparieren, aber es hat für meine Bedürfnisse funktioniert. Ich denke, 85% aller Dinge, die LinqToSql tun wird. Und es gibt viele Unit-Tests im Projekt, um Ihnen zu sagen, was sie wissen, dass sie versagen.

dbLinq unterstützt viele andere Datenbanken (MySQL, PostgreSQL, Firebird). Ich habe es für nichts anderes als SQLite verwendet.

    
jcollum 07.05.2009 20:25
quelle
1

Ich musste gerade die gleiche Frage für ein neues Projekt beantworten, das wir starten, und nach einem Vergleich der Alternativen, die wir für LLBLG weil:

  • Es ist ausgereifter als Entity Framework
  • Es unterstützt Linq-Abfragen
  • Es wird von mehreren engagierten Entwicklern aktiv entwickelt
  • Es ist preiswert
  • Die Unterstützung ist einfach großartig

ps. Ich sollte wahrscheinlich erwähnen, dass ich nicht an llblgen und / oder solutions design angeschlossen bin

    
edosoft 23.01.2009 10:25
quelle
0

Ich benutze auch linq2sql und es funktioniert großartig. Sobald Sie feststellen, dass die generierten Klassen partielle sind, können Sie benutzerdefinierten Code, Felder, was nicht dort. Ich habe meine Business-Klassen aus den generierten linq2sql-Klassen gemacht.

Eine Einschränkung: Ein varchar (1) wird standardmäßig in char konvertiert. Dies gab mir Probleme, weil varchar (1) "" sein kann, während char nicht ... Ein einfacher Wechsel zu einer Zeichenfolge im Eigenschaftsfenster löste dies jedoch.

    
Boris Callens 23.01.2009 10:45
quelle

Tags und Links