Domanda

Siamo pronti per iniziare un nuovo progetto al lavoro, nessun codice legacy. Abbiamo usato Subsonic in passato e ne siamo abbastanza soddisfatti. Ma questo era prima di Linq.

Qualcuno ha dovuto affrontare questo stesso problema (Linq x Subsonic)?

Qual è stata la tua decisione? Quali sono stati i motivi?

Qualsiasi approfondimento apprezzato.

È stato utile?

Soluzione

SubSonic

Pro:

  • Bello e semplice
  • Ponteggi

Contro:

  • Le firme dei metodi spesso accettano parametri di stringa (anche se sei incoraggiato a usare costanti di stringa DAO) che possono essere abusati.

Ricorda:

  • Richiede il progetto del sito Web per la generazione di modelli privi di codice e privi di codice (richiede BuildProvider).

Linq To SQL

Pro:

  • Zucchero sintattico nell'IDE
  • MS supportato
  • Visualizza l'SQL da eseguire nell'IDE
  • Consente diversi livelli di manipolazione nel modello, dalla generazione automatica alle definizioni esplicite fino alle proprietà degli oggetti.

Contro:

  • Complex. Per essere efficace, devi imparare nuovi concetti come DataContext.

Ricorda:

Valuta anche il ADO.NET Entity Framework e qui .

Altri suggerimenti

L'unica cosa che amo di LINQ, che non penso che SubSonic gestisca con garbo, si occupa automaticamente dei join.

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

genererà automaticamente SQL come 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

Che dire di NHibernate? È davvero fuori tema per i nuovi progetti? Tuttavia, le persone provenienti da Java lo troveranno familiare e puoi anche usarlo con .NET 2.0 e Mono.

Sono andato con Linq perché è integrato nel framework. Per quelli che dicono che non sarà supportato da Microsoft ... è LinqToSql che verrà gradualmente eliminato. Credo che uno dei piani sia quello di assorbirlo nel Entity Framework.

Ora sto usando Entity Framework. Utilizza anche linq e fondamentalmente è esattamente come linqToSql con maggiore flessibilità e potenza se si sceglie di usarlo.

Tendo a evitare quadri e orme di terze parti perché alla fine anche loro si estinguono. Credo che abbiano più possibilità di estinguersi perché la loro vita proviene da quante persone sono interessate e la usano. La loro vita dipende anche fortemente dal suo autore / collaboratore principale.

La mia esperienza è stata primaria con SubSonic. È molto semplice da implementare e avrai il DAL completato in meno di mezz'ora. Ricorda che si tratta di un coltellino svizzero, in quanto progettato per essere utilizzato. Fondamentalmente ottieni una classe generata per tabella, oltre alla possibilità di eseguire il caricamento lazy per le raccolte. Puoi anche eseguire le procedure memorizzate tramite il framework, quindi se hai strutture di dati complesse puoi recuperarle dal database e aggiornare una classe creata a mano.

L'ho usato su 5 grandi progetti ora e sono rimasto colpito dalla rapidità con cui sono diventato dipendente da esso.

Ero nella stessa situazione. LinQ è più "Visual", fai tutto all'interno di vstudio, e anche Rob ammette che subsonic ha alcune cose da abbinare.

IEnumerable, LINQDatasource (con paginazione automatica) e la modellazione visiva mi hanno convinto a scegliere Linq su Subsonic.

Il rischio maggiore con linq to sql è che Microsoft si stancherà e lo abbandonerà. Ci sono molte ipotesi che ciò sia già avvenuto e che verrà aggiornato solo il framework dell'entità. Subsonic non soffre di questo e, peggio ancora, hai il codice sorgente per effettuare le tue modifiche.

Potresti voler esaminare cosa succede quando MS smette di sviluppare LINQ to SQ L, come sembra accadere. L'ultima versione di SubSonics è più facile da creare query e più leggibile, rispetto alla loro versione precedente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top