2010-04-23 12 views
17

La relativa simplicidad de Linq-To-Sql, así como todas las críticas dirigidas a la versión 1 de Entity Framework (especialmente, the vote of no confidence) me convencieron de ir con Linq-To-Sql "por el momento". Ahora que EF 4.0 está listo, me pregunto si es hora de comenzar a migrar hacia él.Volcar Linq-To-Sql ahora que Entity Framework 4.0 ha sido lanzado?

Preguntas:

  1. ¿Cuáles son los pros y los contras de EF 4.0 en relación con LINQ to SQL?
  2. ¿EF 4.0 está finalmente listo para el horario de máxima audiencia?
  3. ¿Ahora es el momento de cambiar?
+0

¿Por qué tiene que ser uno de esos dos? ¿Por qué no NHibernate, subsónico, etc.? –

+3

@mgroves, me estaba enfocando en la tecnología incorporada en .NET Framework, pero tienes razón, definitivamente existen otras tecnologías que podrían ser tan buenas o incluso mejores. – devuxer

+0

Me gusta la forma en que Microsoft integra sus paquetes ORM con el IDE. Los proyectos de código abierto tienden a no hacer esto también. –

Respuesta

18

Bueno, un debate sin fin :-)

Sí, creo firmemente EF4 es definitivamente listo para el prime time - Microsoft ha hecho un trabajo excepcional de hacer frente a casi todas las molestias y problemas con la versión 1.0 de EF.

Está listo para el horario de máxima audiencia, si necesita todas sus características.

Linq-to-SQL es un mapeador OR sencillo, sin lujos, sin sentido, que mapea una tabla de base de datos a un objeto CLR, y eso es todo. Muy básico, muy directo, pero una capa bastante delgada sobre SQL Server.

EF4 por otro lado es mucho más

  • un modelo conceptual de datos en su espacio objeto
  • un modelo de datos de almacenamiento en su capa de base de datos
  • una capa de mapeo entre la base de datos de dos
  • -independiente

Así que si realmente necesita soporte para múltiples bases de datos (y no solo SQL Server), o si usted realmente necesita poder transformar la estructura de la base de datos en un modelo de objetos totalmente diferente: EF4 es un gran lugar para comenzar.

Si tiene una aplicación sencilla y sencilla de tamaño pequeño a mediano que solo necesita poder mapear fácil y rápidamente tablas 1: 1 a objetos, entonces no creo que EF4 se acerque aún más en términos de simplicidad y rendimiento a Linq-to-SQL.

EF4 es genial, ¡y si necesita potencia, vaya con eso!

Pero si sus requisitos son mucho menores, podría ser demasiado: continúo utilizando Linq-to-SQL (lo haré) y estaré contento con él. No veo ninguna buena razón para descargar Linq-to-SQL, todavía está totalmente disponible en .NET 4, ha sido bendecido con algunos bug fixes and improvements incluso, y estará disponible por al menos un par de años más.

+0

Gracias, Marcar, +1. Por lo general, trabajo con los escenarios más simples que describe, por lo que su respuesta me hace creer que debo seguir con Linq-To-Sql a menos que/hasta que tenga requisitos más complejos. – devuxer

+0

Cuando dices varias bases de datos de las que acabas de hablar, ¿puede hacer mysql o estás hablando de si necesitas diferentes tipos de bases de datos conectadas en un EF? También por qué se llama EF4 y no EF2.0 parece ser una convención de nombres bastante estúpida. Finalmente, veo tu punto de partida para cosas más simples, pero ¿no sería más seguro ir con el EF ya que los requisitos cambian constantemente y es posible que no necesites las características avanzadas hoy, pero hace 2 años que lo necesites y luego tengas que cambiar toda la capa de la base de datos? – chobo2

+1

@ chobo2: me refiero a que EF4 puede admitir múltiples bases de datos: puede conectarse a SQL Server, IBM DB2, MySQL y algunos más. Si desea usarlos de una vez, debe tener múltiples ObjectContexts, por supuesto; no puede mezclar varias bases de datos en un solo ObjectContext. Se llama EF4 porque ha sido lanzado en .NET 4 timeframe, pero eso es solo marketing. Sí, podría ser "más seguro" ir con EF4 en este momento, pero solo digo que, por ahora, en muchos casos, EF4 será un exceso y te perjudicará en términos de rendimiento y causará más dolores de cabeza debido a su complejidad –

0

@marc_s, @DanM:

Por favor, no consideran este post como un anuncio :) que sólo quieren saber la opinión de los usuarios avanzados de LINQ to SQL.

Hemos implementado las siguientes mejoras en nuestra LinqConnect (LINQ a SQL Server, Oracle, MySQL, PostgreSQL, SQLite):

- Complex Type 
- Many to Many 
- Batch update operations 
- Recursive support in DataLoad options 
- Query level preload (like Include in EF) 
- TPT support (in LinqConnect 2.0) 

También tenemos planes para añadir soporte para caché de segundo nivel.

¿Son estas mejoras valiosas para usted?

+3

"Por favor, no lo consideren un anuncio, pero aquí hay un anuncio de nuestras cosas ..." Buen intento. – Zannjaminderson

Cuestiones relacionadas