2008-11-09 14 views
25

Con LINQ to SQL molto probabilmente non otterremo lo stesso sviluppo attivo di Entity Framework, pensi che sia meglio passare a Entity Framework?Pensi che sia vantaggioso passare a Entity Framework?

Personalmente ho trovato che EF è molto goffo e difficile da usare rispetto a LINQ to SQL che sembra molto naturale.

EDIT: ho recentemente pubblicato un articolo sul mio blog sui miei sentimenti verso questo potenziale decisione ...

ADO.NET v LINQ to SQL

risposta

22

IMO, non al momento.

È chiaro (in particolare da recent announcements) che EF è disponibile per alcune revisioni pesanti poiché lo scenario "thunderdome" viene riprodotto tra LINQ-to-SQL ed EF. Qualunque cosa accada, EF (tra qualche anno) sarà quasi certamente diverso dall'EF oggi. O certamente "abbastanza diverso" ;-p

Come tale, la mia opinione è: bastone con semplice. E semplice LINQ-to-SQL.

Non vedo molti vantaggi nell'apprendere un sistema notoriamente complesso se so che cambierà molto presto.

E io sono al 100% con voi su LINQ to SQL ;-p

Se avevo bisogno di qualcosa di più di LINQ to SQL in questo momento, mi piacerebbe guardare in NHibernate o forse LLBLGen Pro.

(modifica - come aggiornamento, la mia posizione si è ammorbidita un po ', e herehere - ma sto ancora utilizzando LINQ to SQL come mio strumento primario; inoltre - LINQ to SQL isn't quite dead yet; -p).

+1

Proprio su !!! Adoro L2S e odio semi-EF :) (per ragioni concrete e concrete). –

+0

@Timothy: sì, ci sono dei motivi. Persone come Ian Cooper potevano parlare * tutto il giorno * di loro ;-p (buon ragazzo, conosce la sua roba ORM) –

+0

D'accordo, azzeccati! Quando EF vNext e .net 4.0 è fuori, vale la pena dare una seconda occhiata. Fino ad allora, L2S ... – KristoferA

2

Per la cronaca, qualche esitazione sul futuro di LINQ to SQL è stata espressa qui:

Is LINQ to SQL DOA?

Has Microsoft really killed LINQ to SQL?

+0

Ma il mio punto chiave è: mentre c'è così tanto flusso, investire pesantemente è un errore. LINQ-to-SQL richiede pochissimo investimento, quindi non vedo che sia un grosso rischio. –

+0

Sono completamente d'accordo, Marc. Sto solo facendo notare a coloro che potrebbero non essere a conoscenza (come non lo ero fino a quando ne ho letto di recente su SO) che LINQ to SQL non è senza alcun rischio. Sicuri, a basso rischio e sicuramente a breve termine. Puoi dire dal volume di domande SO che è molto popolare – DOK

+0

Infatti. Devo amare la strategia: uccidere l'implementazione che piace alla gente ;-p In tutta onestà, è molto più complesso di così, e non vedo l'ora che arrivi la risposta "reale" tra qualche anno (.NET 4.0). MS ha un po 'di una montagna di PR/dev-confidence da scalare qui. Spero che riescano ... –

3

Sono d'accordo con Marc Gravell. Forse quando viene rilasciata la prossima versione di Entity Framework (.net 4.0/VS2010) ci sarà un vantaggio nell'utilizzo di EF, e sarà probabilmente molto diverso dall'attuale versione di EF.

Fino ad allora, almeno, eviterò EF come la piaga per qualsiasi cosa, oltre a test/codice sperimentale che non arriverà mai alla produzione.

Il EF msdn forum è piena di esempi per spiegare perché EF non è pronto per prime-time, ma c'è one particular example che è un chiaro vincitore - quello che sarebbe normalmente un semplice cinque query di tabella (10-15 righe di SQL) diventa >1500 lines of SQL quando si utilizza EF ed il controllo EntityDataSource:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3874607&SiteID=1

http://paste-it.net/public/q6ed5c2/

e per quanto riguarda il futuro di EF - con Microsoft di history of changing direction sulle grandi cose strategiche durante la notte, chissà se loro attuale "s obiettivo trategico "con EF si realizzerà tra un paio di anni da oggi ..? Di sicuro non ci scommetterei. Vedere:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4100399&SiteID=1#4107623

+0

Questa quindicina di righe è ridicola, non posso crederci. –

+0

Sì, questi tipi di query sui mostri sono ... sorprendenti. Ecco un altro esempio interessante; query semplice con raggruppamento + aggregazione su due tabelle. L2S genera una query efficiente, L2E no. http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/bb72fae4-0709-48f2-8f85-31d0b6a85f68 – KristoferA

2

LINQ to SQL non sembra essere un'opzione a meno che non si utilizza SQL Server (o SQL Server Compact), così che era un motivo sufficiente per me per evitarlo e utilizzare EF (volevo usare PostgreSQL).

Ci sono sicuramente abbastanza cose mancanti in v1 di EF che mi farebbe esitare a raccomandarlo. Sembra che la versione 2 dell'EF (quando rilasciata) sarebbe la prima versione che potrebbe essere seriamente raccomandata per il passaggio a.

+0

Spot on - l2s è SOLO SQL Server. EF = altri fornitori –

6

Se si sta eseguendo lo sviluppo basato su database, EF offre vantaggi reali oggi.

Ho usato sia LINQ to SQL ed EF e ho lavorato attraverso le molte piccole frustrazioni di EF v1.

Tuttavia, l'unica cosa che ha fatto vincere EF v1 per me è il sorprendente aggiornamento dalla procedura guidata del database. Incredibilmente, questo funziona in realtà! Può sembrare banale, ma se stai progettando il database al primo posto, vuoi fare affidamento sugli strumenti per creare le tue classi per te e non vuoi dover rigenerare l'intero modello solo per fare un cambiamento.

Questo solo rende EF v1 la mia scelta. Suggerisco di ignorare le funzionalità avanzate di EF v1: non è neanche lontanamente utilizzabile come l'ambiziosa piattaforma che intende essere.

Soddisfate del clunkiness di EF v1 e sarete nella migliore posizione per il futuro.

Pete.

+4

Il "buon" aggiornamento dalla procedura guidata del database "?? Quello che non rileverà se cambi nulla, tipo di dati, ecc. Sulle colonne esistenti? Quello che sostituisce l'intera porzione SSDL di EDMX quando qualcosa viene aggiornato, sovrascrivendo eventuali personalizzazioni che potresti aver fatto ad esso? – KristoferA

+3

(continua) Quello che non può aggiungere nuovamente un'entità rimossa se non si utilizza un editor xml per cancellare manualmente gli artefatti SSDL? Oh beh, dicono che sarà meglio in Visual Studio 2010. Nel frattempo mi sto attenendo a L2S e sto aggiornando il mio modello usando il mio strumento di sincronizzazione per i modelli L2S che applicano le modifiche * solo *. – KristoferA

7

Ho completato alcuni progetti MVC ora in produzione con L2SQL sotto il cofano e l'ho trovato piuttosto piacevole da usare. Ora sto imbarcando in un nuovo progetto e ho deciso di scriverlo usando EF e L2EF dati gli articoli citati in precedenza che proclamavano la morte di L2SQL. Dopo solo un paio di giorni ho deciso di tornare su L2SQL. Le cose semplici come dover impostare le chiavi esterne per gli inserti utilizzando la sintassi terribile mostrata di seguito o le ricerche non necessarie mi hanno scioccato.

foo.Foreign_TypeReference.EntityKey = 
    new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId); 

Piuttosto che:

foo.Foreign_Type_Id = ForeignTypeId; 

non credo che sarà così difficile da porto L2SQL ad una futura versione di EF come L2SQL ha un sottoinsieme delle funzionalità (anche se meglio implementato). Le poche cose che L2SQL ha che L2EF non è, per esempio Single() e SingleOrDefault(), possono essere migrate in EF creando alcuni metodi di estensione. Penso che ci vorrà molto meno tempo per far funzionare il sistema usando L2SQL e poi portarlo più tardi quando EF non è così maleodorante.

+0

Questo praticamente lo riassume per me. Spero che EF vNext sia più carino. –

-1

Recentemente, ho dovuto ricercare quale progetto ORM dovrebbe usare. All'inizio - ha provato L2S. Non era affatto male, ma è già obsoleto (MS non lo supporta più), ecco perché ho iniziato a controllare L2E. Sto bene con il codice generato, ma creare viste false, entità e mappature tra di loro solo per rendere disponibile la stored procedure e non per riempire tutti i campi di entità è stato per me eccessivo. E volevo separare il mio livello dataaccess, quindi - ho dovuto mappare i dati da oggetti generati a quelli che ho creato.

Mi ci sono volute alcune ore di esperimenti con NHibernate + Fluent NHibernate + LINQ su NHibernate
da utilizzare con questa combinazione.

+2

Questo non è corretto. Microsoft ha attualmente 5 sviluppatori su LINQ to SQL. –

+0

aha ... Ieri ho letto che stanno correggendo i bug. Errore mio. Ad ogni modo - questo non cambia la mia opinione. –

+0

.NET 4.0 presenterà una serie di miglioramenti a LINQ A SQL http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40 –

Problemi correlati