LINQ to SQL è morto?

17

C'è qualche ragione per continuare a usare Linq su SQL, o è meglio passare a tecniche ORM come EF, NHibernate ecc.

Usiamo Linq in SQL in una nuova applicazione aziendale di grandi dimensioni che esisterà per molto tempo. La motivazione per questa nuova applicazione aziendale è che l'applicazione era ordinaria scritta in Visual Basic e poiché Microsoft ha interrotto il supporto in cui siamo costretti a riscrivere l'applicazione. Sembra che siamo già lì ma questa volta con il nostro DAL (Data Access Layer).

Ho già letto questo articolo , ma si confronta solo con la debolezza di EF.

    
posta Amir Rezaei 12.11.2010 - 09:35
fonte

5 risposte

11

Se lo stai già utilizzando e non incontri difficoltà, lo terrei con i progetti esistenti.

Linq2SQL è piuttosto bello, ma limitato, ORM - se vuoi mappare i tuoi oggetti in modi più complessi rispetto a quelli di base forniti da Linq2SQL, allora sarai bloccato. Microsoft ha risolto alcuni bug quando sono usciti con .net 4, ma hanno affermato che non dedicheranno risorse per estenderlo.

Direi che se hai un progetto abbastanza semplice che probabilmente ha una durata limitata, Linq2SQL è una scelta decente e leggera, fintanto che fai attenzione a non perdere le dipendenze da Linq2SQL ovunque. Per qualcosa in più andrei con qualcos'altro (NHibernate o EF per esempio) dato che Linq2SQL è praticamente un vicolo cieco.

    
risposta data 12.11.2010 - 09:57
fonte
12

Non è morto, ma Microsoft è ora focalizzato su Entity Framework.

Ho usato LINQ to SQL su piccoli progetti, ed è piuttosto bello come un livello di dati leggero e vorrei prendere in considerazione l'utilizzo di nuovo su progetti di dimensioni simili. La stessa implementazione LINQ è veramente buona e fino a poco tempo fa molto migliore del progetto LINQ di NHibernate. Nel progetto più ampio in cui ho usato L2S, ho trovato difficile trovare un modello di unità di lavoro di cui ero soddisfatto, a causa delle limitazioni con la classe DataContext di L2S. Cercare di implementare qualcosa come "Sessione per richiesta" con L2S sembra molto difficile o impossibile.

Inoltre, non considererei L2S un vero ORM, in quanto non offre molte opzioni di mappatura. Il tuo design di classe deve davvero seguire lo schema del tuo database (tabella per classe) altrimenti combatterà con te in ogni fase del percorso. Un'altra cosa che non mi piace di L2S è la necessità di utilizzare tipi specifici ( EntitySet e EntityRef ) per gestire collezioni, riferimenti e caricamento lento. Ciò significa che non è possibile mantenere agnostico il tuo modello di dominio ORM senza aggiungere un altro livello di astrazione.

Il mio altro problema con L2S è l'unico affidamento a LINQ per generare query. Il provider LINQ è scritto molto bene e in genere crea un SQL decente per la maggior parte delle query, ma ho il mio timore che ci siano domande più complesse che non possono essere espresse bene con LINQ. In L2S, in pratica, devi tornare a chiamare le stored procedure in questi casi, mentre (ad esempio) NHibernate ha diverse API (provider LINQ, QueryOver, HQL ecc.) Che possono essere utilizzate quando vuoi un maggiore controllo sullo SQL generato.

Nella difesa di L2S su NHibernate, ci sono un sacco meno spese generali per farlo funzionare su un progetto.

    
risposta data 12.11.2010 - 11:33
fonte
2

Non è morto perché funziona ancora, ma se non viene sviluppato ulteriormente, può avere senso passare a qualcos'altro.

Tuttavia, se funziona per la tua applicazione, non c'è motivo di cambiare per il gusto di cambiare.

    
risposta data 12.11.2010 - 09:56
fonte
2

più stabile di imho morto:

link

link

Hanno spostato i loro sforzi di miglioramento verso Entity Framework, dove è veramente necessario se quel prodotto ha successo. Non aspettatevi nulla di nuovo, ma compatibilità e correzione di bug su linq2sql per un po '.

Questo sito viene eseguito con un sacco di linq2sql se non sbaglio.

    
risposta data 15.11.2010 - 17:06
fonte
1

È strano ma ho visto molto questo fraseggio ("LINQ2SQL è morto") e non sono sicuro da dove provenga *. È come Windows XP morto. Microsoft ha interrotto il supporto e ha creato qualcosa di nuovo (e ai miei occhi meglio) ma le persone sono ancora libere di usare XP proprio come sono libere di usare Linq2SQL. Devo ammettere che utilizzo Linq2SQL durante la creazione di moduli DotNetNuke personalizzati. Tuttavia, con nuove funzionalità in EF4 come lo sviluppo code-first ( link ) è difficile trovare motivi per restare con Linq2SQL. Non vedo un motivo per passare e aggiornare il codice ma per il nuovo codice non so perché non si voglia utilizzare EF4.

* In tutta onestà, però, sono molto ... ossessivo per la semantica! Mi scuso se è fastidioso per gli altri:)

    
risposta data 12.11.2010 - 15:10
fonte

Leggi altre domande sui tag