2009-05-14 14 views
12

Un poco de aclaración: estaba buscando el título de Oreilly de Julia Lerman en el marco Entity y me confundí mucho.LINQ o ADO.net Entity Framework: ¿qué aprender?

tengo LINQ esencial de Charlie Calvert, pero a partir de mi sesión de 10 minutos con el libro de Lerman, resulta que LINQ es LINQ a SQL que parece poca potencia con su objeto DataContext etc ...

Mientras que Entity Framework es el futuro , pero tiene algo llamado Entity SQL que a mi parecer se parecía exactamente a Transact-SQL. Ahora mi ojo podría ser un poco oxidado, pero la pregunta es:

Desde Marco de la entidad es el caballo principal que Microsoft está apoyando, ¿hay algún punto en el aprendizaje de LINQ to SQL con su

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

y AM Confundí al pensar que Entity SQL y LINQ son dos tecnologías diferentes. ¿Realmente la entidad SQL usa LINQ?

publicar las muchas respuestas que obtuve:

Bueno chicas, soy nuevo en esto, así que estoy editando mi respuesta esta vez ;-) Muchas gracias por sus respuestas completas, acelerados y muy útiles. Saludos MereMortal

+1

Mucha gente estaría en desacuerdo con que Entity Framework sea el futuro: http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/ :) – BobbyShaftoe

+0

Desafortunadamente, esa carta es totalmente irrelevante. Esperaron hasta que EF ya había enviado antes de escribirlo, por lo que se trata más de lloriquear que fueron ignorados que de pedir un cambio. Ni siquiera cuenta como una ilusión. –

+0

Así es la sintaxis que aprendo con LINQ to SQL aplicable a LINQ to Entities (sé que las entidades tienen una gran configuración y archivos XML que describen los metadatos) pero para obtener una respuesta ¿es la misma consulta en ambos casos? – MereMortal

Respuesta

9

LINQ es un término genérico para las características del lenguaje que permiten que las consultas se escriban en C# o VB.NET en un almacén de datos de algún tipo. Hay LINQ to SQL, LINQ to Entities, LINQ to Objects, etc.

LINQ to SQL modela de cerca la estructura física de la base de datos. Produce un tipo para cada tabla en la base de datos. Si su base de datos cambia, entonces su código LINQ to SQL tendrá que cambiar.

LINQ to Entities modela más de cerca el diseño conceptual de la base de datos. Le permite mapear a la base de datos física, pero, por ejemplo, le permite crear una entidad de Persona que incluye datos de las tablas Persona y Contactos. Esto le permite a sus interlocutores pensar en términos de qué datos significan en lugar de cómo se implementan los datos.

Además, Microsoft ha dicho que el desarrollo futuro en LINQ to SQL será limitado en comparación con el desarrollo en LINQ to Entities. Dada la mayor flexibilidad y el hecho de que LINQ to SQL no obtendrá muchas más mejoras, iría con LINQ a Entities y Entity Framework.

1

LINQ es una construcción de programación que le permite consultar sus objetos

hay una LINQ to SQL que creo que está hablando.

siempre se puede utilizar LINQ para consultar objetos EF ...

25

LINQ! = LINQ a SQL

LINQ es el concepto, incluyendo algunas soporte de idiomas. Hay muchas implementaciones, LINQ-to-SQL es uno, como lo son ADO.NET Data Services, LINQ-to-Entities de Entity Framework, LINQ-to-Objects, LINQ-to-SQL, LINQ-to-Amazon, DbLinq, etc.

Aún usa LINQ con Entity Framework; de hecho, LINQ-to-Entities es la opción preferida, lo que da una comprobación estática en tiempo de compilación. Entity SQL es simplemente otro mecanismo (además de LINQ-to-Entities) para consultar el EDM (Entity Data Model).

Hay 3 razones principales que ESQL es útil:

  • fue el única opción a principios de vistas previas cuando LINQ a Entidades estaba todavía en construcción
  • que puede ser utilizado en algunos escenarios donde hay es ningún modelo objeto, por ejemplo servicios de información
  • hay un pequeña número de casos en los que ESQL es más expresivo

Para todo lo demás, LINQ debe ser su herramienta para trabajar con Entity Framework.

+0

bien dicho :) Aprende linq. –

+0

Marc, eSQL es bueno para consultas dinámicas también. Claro que puedes hacer las mismas cosas con manipulación de expresiones, etc., pero la mayoría de la gente se siente mucho más cómoda manipulando cadenas que árboles de expresión. –

+0

Entity SQL se puede usar con los lenguajes de programación que no tienen soporte para LINQ como Managed C++. –

0

Entity Framework tiene LINQ to Entities, por lo que puede ejecutar la misma consulta también contra EF. Y mi respuesta será invertir más en EF, porque el aumento de EFv4 parece prometedor.

4

Como han dicho otros, probablemente se refiera a Linq to SQL vs Entity Framework.

Ambos funcionan para SQL Server, pero solo Entity Framework funcionará para otras bases de datos. Además, LINQ to SQL se ha depreciado más o menos. Entonces ve con Entity Framework.

1

Whoa whoa. Disminuir la velocidad allí.

respuesta corta: Entity Framework

respuesta más larga:

LINQ a SQL y Entity Framework son las tecnologías de acceso a datos.

LINQ es decir, de acuerdo con la EM,

LINQ es un conjunto de extensiones para .NET Framework que abarcan consulta en lenguaje integrado, SET y transformar las operaciones. Extiende C# y Visual Basic con la sintaxis de lenguaje nativo para consultas y proporciona bibliotecas de clase para aprovechar estas capacidades de .

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

Tanto LINQ a SQL y Entity Framework tienen los proveedores de Linq, que permiten que la sintaxis impresionante cuando se consultan en contra de ellos.

0

Por lo que entiendo, EF aún no está listo para el horario de máxima audiencia, y no es compatible con muchos de los constructivos LINQ que funcionan tan fácilmente hoy en día en LINQ2SQL.

Si puede comprometerse con SQL Server para su aplicación, digo hoy, aprenda LINQ2SQL. Tendrá más capacidades para realizar consultas cuando use LINQ.

Estoy apostando cuando EF esté listo, será una transición mucho más fácil para usted ya que el lenguaje de consulta debe ser transferible.

Buena suerte.

+0

EF4 (que se enviará en .NET 4.0/VS2010) parece corregir muchos de los defectos y deficiencias de la EF actual y parece muy prometedor. http://blogs.msdn.com/adonet/archive/tags/Entity+Framework/default.aspx –

+0

muchas gracias por esa respuesta realmente útil Linus, había empezado a llegar a la misma conclusión yo mismo. Pensé que EF es bastante elaborado y me alejo de ADO.Net command/connection/etc. para aprender LINQ to SQL es probablemente un buen y útil primer paso, además de que hay muchas buenas referencias a LINQ to SQL, mientras que EF no está tan extensamente escrito sobre eso. – MereMortal

0

Participo en microsoft TehcDays en Montreal el 2 y 3 de diciembre, y dijeron que ya no admitirán LINQ a sql en pocos años, por lo que es mejor comenzar a aprender LinQ a la entidad (Entity framework).

+0

LINQ to SQL fue una solución a corto plazo. Como su nombre indica, funciona específicamente con SQL Server. EF por otro lado tiene soporte para múltiples bases de datos. Puede consultar uno de los blogs que escribí antes comparando las dos tecnologías http://nileshgule.blogspot.com/2010/09/entity-framework-part-2-comparison.html –

Cuestiones relacionadas