2008-10-30 12 views
7

Wir sind bereit, ein brandneues Projekt bei der Arbeit zu beginnen, ohne Legacy-Code. Wir haben Subsonic in der Vergangenheit benutzt und wir sind ziemlich glücklich damit. Aber das war vor Linq.Was würden Sie heute für Ihre Datenschicht, Linq oder Subsonic, wählen?

Hat jemand das gleiche Problem (Linq x Subsonic) konfrontiert?

Was war Ihre Entscheidung? Was waren die Gründe?

Jeder Einblick geschätzt.

+0

Meinst du LINQ oder LINQ zu SQL? Weil SubSonic LINQ seit 3.0 unterstützt. –

+0

Als ich die Frage im Oktober letzten Jahres stellte, war Subsonic Version 2.1 (keine Linq). Ich denke, die aktualisierte Frage sollte LinqToEntities x Subsonic 3.0.0.3 (ab sofort) sein. – nandos

+0

Entity Framework bietet deutlich bessere Leistung als Subsonic: http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic – Tim

Antwort

11

SubSonic

Pro:

  • Schön und einfach
  • Gerüste

Nachteile:

  • Methode Signaturen oft String parms akzeptieren (obwohl Sie DAO String-Konstanten zu verwenden ermutigt sind), die missbraucht werden können.

Beachten Sie:

  • Benötigt Projekt Webseite für No-Code, hands-off-Modellgenerierung (benötigt die Buildprovider).

Linq

Pros auf SQL:

  • syntaktische Zucker in der IDE
  • MS unterstützt
  • Ansicht die SQL in der
  • IDE ausgeführt werden
  • Ermöglicht unterschiedliche Ebenen des Fiedelns im Modell, von der automatischen Generierung über explizite Definitionen bis hin zum Objekt t Eigenschaften.

Nachteile:

  • Complex. Sie müssen neue Konzepte wie den DataContext lernen, um effektiv zu sein.

Beachten Sie:

Bewerten Sie auch die ADO.NET Entity Framework und here.

+0

Beachten Sie, dass die Dynmanic Data-Seiten von ASP.NET MVC ein Gerüst erstellen, das SubSonics sehr ähnlich ist, aber auf LINQ basiert. –

+1

Ihre erste SubSonic Con ist nicht wahr, das ist nur eine Möglichkeit, es zu tun. Sie können auch sonic.exe oder SubStage.exe ausführen, um Teilklassen zu generieren, die Sie dann in Ihr DAO-Projekt in der Lösung einschließen. –

+0

Mit auto generation meine ich hands-off. Ich war überwältigt von den In-Memory-Datenobjekten, als ich sie zum ersten Mal sah, und fühlte mich dann ein bisschen enttäuscht von der Realität. Keine große Sache. Ich denke, SubSonic kickt einen Arsch. Vielleicht keine Konsequenz, sondern ein "Schaue dir die glänzende Verpackung an"? –

3

Die eine Sache, die ich an LINQ liebe, die ich glaube nicht, dass SubSonic so elegant behandelt, ist automatisch mit Joins umzugehen.

FROM a in db.Orders 
where a.Total > 100 
SELECT new {a.Item.Desc, a.Customer.Name}; 

automatisch generieren SQL wie thisL

select i.DESC, c.NAME 
from ORDERS o 
inner join ITEMS on o.ItemID = i.ItemID 
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID 
where o.TOTAL > 100 
0

Das größte Risiko mit LINQ zu SQL ist, dass Microsoft es müde werden und es aufgeben wird. Es gibt viele Spekulationen, dass dies bereits geschehen ist und dass nur das Entity-Framework aktualisiert wird. Subsonic leidet darunter nicht und im schlimmsten Fall haben Sie den Quellcode, um Ihre Änderungen vorzunehmen.

+0

Ich denke, das ist Unsinn.Zuerst gibt es "LINQ" (Syntax), "LINQ to SQL" und "LINQ to Entities". Die letzten beiden sind im Wesentlichen Codegeneratoren zum Erstellen von DataContext-Objekten, die von der LINQ-Syntax verwendet werden. Die LINQ-Syntax geht nicht weg - viel von C# 4 basiert darauf. Die Aktualisierung von Codegeneratoren ist geringfügig. –

+0

I ment "linq to sql" Ihre rechte linq geht nirgendwohin. Dieser neueste Beitrag von ADO.NET Blog würde diese Position unterstützen http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities- roadmap.aspx –

0

Ich war in der gleichen Situation. LinQ ist mehr "Visual", du machst alles innerhalb von vstudio, und selbst Rob gibt zu, dass subsonic ein paar Dinge zu bieten hat.

IEnumerable, LINQDatasource (mit Auto Paging) und die visuelle Modellierung haben mich überzeugt, Linq über Subsonic zu wählen.

1

Was ist mit NHibernate? Ist es für neue Projekte wirklich nicht in Sicht? Dennoch werden Leute, die von Java kommen, es vertraut finden und Sie können es auch mit .NET 2.0 und Mono verwenden.

0

Sie möchten vielleicht untersuchen, was passiert, wenn MS stops developing LINQ to SQ L, wie es scheint, passiert. SubSonics neueste Version ist einfacher zu erstellen Abfragen und lesbarer, dann ihre vorherige Version.

1

Meine Erfahrung war primär mit SubSonic. Es ist sehr einfach zu implementieren und Sie werden Ihre DAL in weniger als einer halben Stunde abgeschlossen haben. Denken Sie daran, dass dies ein Schweizer Taschenmesser ist, da es für den Gebrauch konzipiert ist. Im Grunde erhalten Sie eine Klasse, die pro Tabelle generiert wird, sowie die Möglichkeit, Lazy Load für Sammlungen durchzuführen. Sie können gespeicherte Prozeduren auch über das Framework ausführen. Wenn Sie also komplexe Datenstrukturen haben, können Sie sie aus der Datenbank abrufen und eine von Ihnen erstellte Klasse aktualisieren.

Ich habe es jetzt in 5 großen Projekten verwendet und bin beeindruckt, wie schnell ich davon abhängig wurde.

1

Ich ging mit Linq, weil es in das Framework eingebaut ist. Für diejenigen, die sagen, es wird nicht von Microsoft unterstützt werden ... es ist LinqToSql, die auslaufen wird. Ich glaube, dass einer der Pläne darin besteht, ihn in das Entity Framework aufzunehmen.

Ich verwende jetzt das Entity Framework. Es verwendet auch linq und im Grunde ist es genau wie linqToSql mit mehr Flexibilität und Kraft, wenn Sie es verwenden möchten.

Ich tendiere dazu, 3rd-Party-Frameworks und Orms zu vermeiden, weil sie schließlich auch aussterben. Ich glaube, sie haben eine größere Chance zu sterben, weil ihr Leben davon kommt, wie viele Menschen daran interessiert sind und es nutzen. Ihr Leben hängt auch stark von ihrem Hauptautor ab.