2009-05-14 7 views
12

Un po 'di chiarimento: stavo dando un'occhiata al titolo Oreilly di Julia Lerman su Entity framework e sono diventato molto confuso.LINQ o ADO.net Entity Framework - quale imparare?

ho essenziale LINQ di Charlie Calvert, ma dalla mia sessione di 10 minuti con il libro di Lerman, risulta che LINQ è LINQ to SQL che sembra sottodimensionato con il suo oggetto DataContext ecc ...

Mentre Entity Framework è il futuro , ma ha qualcosa chiamato Entity SQL che ai miei occhi sembrava esattamente come Transact-SQL. Ora il mio occhio potrebbe essere un po 'arrugginito, ma la domanda è:

Dal Entity Framework è il cavallo principale che Microsoft sta sostenendo, c'è qualche punto a imparare LINQ to SQL con la sua

 var numberGroups = 
      from n in numbers 
      group n by n % 5 into g 
      select new { Remainder = g.Key, Numbers = g }; 

e AM Mi sono confuso nel pensare che Entity SQL e LINQ sono due tecnologie diverse, in realtà l'SQL SQL utilizza LINQ?

inviare le tante risposte che ho ricevuto:

Ok gente, io sono nuovo a questo, quindi sto modificando la mia risposta questa volta ;-) Molte grazie per le vostre risposte complete, accelerata e molto utile. Saluti MereMortal

+1

Molte persone non sono d'accordo sul fatto che Entity Framework sia il futuro: http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/ :) – BobbyShaftoe

+0

Sfortunatamente, quella lettera è totalmente irrilevante. Hanno aspettato fino a quando EF non fosse già stato spedito prima di scriverlo, quindi è più sul whining che sono stati ignorati piuttosto che sul chiedere di cambiare. Non conta nemmeno come un pio desiderio. –

+0

Quindi la sintassi che apprendo con LINQ su SQL si applica a LINQ alle entità (so che le entità hanno una grande configurazione e file XML che descrivono i metadati) ma per ottenere una risposta è la stessa query in entrambi i casi? – MereMortal

risposta

9

LINQ è un termine generico per le caratteristiche del linguaggio che consentono di query per essere scritto in C# o VB.NET su un archivio di dati di qualche tipo. C'è LINQ su SQL, LINQ su entità, LINQ su oggetti, ecc.

LINQ to SQL modella da vicino la struttura fisica del database. Produce un tipo per ogni tabella nel database. Se il database cambia, sarà necessario modificare il codice LINQ su SQL.

LINQ to Entities modella più da vicino la progettazione concettuale del database. Consente di eseguire il mapping al database fisico, ma, ad esempio, consente di creare un'entità Persona che include i dati delle tabelle Persona e Contatti. Ciò consente ai chiamanti di pensare in termini di ciò che i dati significano invece di come vengono implementati i dati.

Inoltre, Microsoft ha detto che lo sviluppo futuro in LINQ to SQL sarà limitato rispetto allo sviluppo in LINQ alle entità. Data la maggiore flessibilità e il fatto che LINQ to SQL non otterrà molti altri miglioramenti, andrei con LINQ a Entities and Entity Framework.

1

LINQ è un costrutto di programmazione che permette di interrogare i oggetti

c'è un LINQ to SQL che penso si sta parlando.

è sempre possibile utilizzare query LINQ to oggetti EF ...

25

LINQ! = LINQ to SQL

LINQ è il concetto, tra cui alcuni supporto per la lingua. Esistono molte implementazioni: LINQ-to-SQL è uno, così come i servizi dati ADO.NET, LINQ-to-Entities del framework Entity, LINQ-to-Objects, LINQ-to-SQL, LINQ-to-Amazon, DbLinq, ecc.

Si utilizza ancora LINQ con Entity Framework; infatti, LINQ-to-Entities è la scelta preferita, dando il controllo statico del tempo di compilazione. Entity SQL è semplicemente un altro meccanismo (oltre a LINQ-to-Entities) per interrogare l'EDM (Entity Data Model).

ci sono 3 motivi principali che ESQL è utile:

  • era la unica opzione nelle prime anteprime quando LINQ to Entities era ancora in costruzione
  • può essere utilizzato in alcuni scenari dove c'è è alcun modello di oggetti, ad esempio i servizi di reporting
  • c'è un piccolo numero di casi in cui ESQL è più espressivo

Per tutto il resto, LINQ dovrebbe essere il tuo strumento per lavorare con Entity Framework.

+0

detto bene :) Scopri linq. –

+0

Marc, eSQL è utile anche per le query dinamiche. Certo, puoi fare le stesse cose con le manipolazioni di espressioni, ecc., Ma la maggior parte delle persone è molto più a suo agio nel manipolare le stringhe rispetto agli alberi di espressione. –

+0

Entity SQL può essere utilizzato con quei linguaggi di programmazione che non supportano LINQ come Managed C++. –

0

Entity Framework ha LINQ alle entità, quindi è possibile eseguire la stessa query anche con EF. E la mia risposta sarà investire di più in EF, perché l'upscanning di EFv4 sembra promettente.

4

Come altri hanno detto, probabilmente si intende Linq to SQL vs Entity Framework.

Entrambi funzionano per SQL Server, ma solo Entity Framework funzionerà per altri database. Inoltre, LINQ to SQL è stato, più o meno, ammortizzato. Quindi vai con Entity Framework.

1

Whoa. Rallenta laggiù.

Risposta breve: Entity Framework

Risposta più lunga:

LINQ to SQL e Entity Framework sono tecnologie di accesso ai dati.

LINQ è, secondo MS,

LINQ è un insieme di estensioni del Framework .NET che comprendono Query Language integrato, impostare e trasformazione operazioni. Estende C# e Visual Basic con la sintassi della lingua nativa per le query e fornisce le librerie della classe per sfruttare le funzionalità di .

da: http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

Entrambi LINQ to SQL e Entity Framework sono fornitori di Linq, che permettono che la sintassi impressionante quando l'esecuzione di query contro di loro.

0

Da quello che ho capito, EF non è ancora pronto per l'ora di punta, e non supporta molti dei costrutti LINQ che funzionano così facilmente oggi in LINQ2SQL.

Se è possibile eseguire il commit su SQL Server per la propria applicazione, dico oggi, impara LINQ2SQL. Avrai più possibilità di interrogare quando usi LINQ.

Scommetto che quando EF è pronto, sarà una transizione molto più semplice per te dal momento che il linguaggio di query dovrebbe essere trasferibile.

Buona fortuna.

+0

EF4 (che verrà fornito in .NET 4.0/VS2010) sembra correggere molti dei difetti e il difetto dell'attuale EF e sembra molto promettente! http://blogs.msdn.com/adonet/archive/tags/Entity+Framework/default.aspx –

+0

molte grazie per la risposta molto utile Linus, avevo iniziato a raggiungere la stessa conclusione io stesso. Ho pensato che EF sia piuttosto elaborato e mi stia allontanando dal comando/connessione ADO.Net/etc .. per imparare LINQ to SQL è probabilmente un buon primo e utile passo, inoltre ci sono molti buoni riferimenti a LINQ to SQL, mentre EF non è scritto molto su. – MereMortal

0

Vado in Microsoft TehcDays a Montreal il 2 e 3 dicembre, e hanno detto che non supporteranno più LINQ in SQL in pochi anni, quindi è meglio iniziare a imparare LinQ su entità (Entity framework).

+0

LINQ to SQL era una soluzione a breve termine. Come suggerisce il nome, funziona solo con SQL Server. D'altra parte EF ha il supporto per più database. Puoi fare riferimento a uno dei post sul blog che ho scritto in precedenza confrontando le due tecnologie http://nileshgule.blogspot.com/2010/09/entity-framework-part-2-comparison.html –