¿LINQ to SQL está muerto?

17

¿Hay alguna razón para seguir usando Linq to SQL, o es mejor pasar a técnicas ORM como EF, NHibernate, etc.

Estamos utilizando Linq to SQL en una nueva aplicación de gran empresa que existirá durante mucho tiempo. La motivación para esta nueva aplicación empresarial es que la aplicación fue escrita ordinariamente en Visual Basic y desde que Microsoft detuvo el soporte, nos vimos obligados a reescribir la aplicación. Parece que ya estamos allí, pero esta vez con nuestro DAL (Data Access Layer).

Ya leí este artículo , pero solo se compara con la debilidad de EF.

Amir Rezaei
fuente
+1 excelente P. Esto es fascinante para mí, he estado considerando mover mis procedimientos almacenados y cadenas de consulta SQL parametrizadas a LINQ to SQL para mejorar la legibilidad, no tenía idea de que ya no se estaba desarrollando.
fearoffours
MS tiene un pequeño tipo de presentación de diapositivas .NET 4 que dice que no está muerto, pero eso puede significar muchas cosas. Lo mejoraron en .NET 4.0: damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40
MetalMikester
No otra vez. Esta pregunta ha sido debatida ad-nauseum en StackOverflow. ¿Puedes decir FUD?
Robert Harvey

Respuestas:

11

Si ya lo está utilizando y no encuentra dificultades, me quedaría con él en los proyectos existentes.

Linq2SQL es un ORM bastante agradable, pero limitado: si desea asignar sus objetos de formas más complejas que las básicas proporcionadas por Linq2SQL, entonces se quedará atascado. Microsoft solucionó algunos errores cuando salieron con .net 4, pero han declarado que no van a dedicar recursos para extenderlo.

Diría que si tiene un proyecto bastante simple que posiblemente tenga una vida útil limitada, entonces Linq2SQL es una opción liviana decente siempre que tenga cuidado de no filtrar las dependencias a Linq2SQL en todo el lugar. Para cualquier otra cosa, iría con otra cosa (NHibernate o EF, por ejemplo), ya que Linq2SQL es prácticamente un callejón sin salida.

FinnNk
fuente
Solo puedo estar de acuerdo, no realmente muerto, pero de alguna manera está sobre la mesa en la clasificación. Si las cosas funcionan y es un gran impacto cambiarlas ahora ... bueno, quizás quieras sentarte un poco y buscar un buen momento para poner la conversión a EF / NHibernate, podría ser un proyecto de actualización financiado (al final todos quieren un trabajo, pan y mantequilla en la mesa).
cyberzed el
@cyberzed: Eso suena como una buena excusa para un trabajo innecesario.
Robert Harvey
12

No está muerto, pero Microsoft ahora está enfocado en Entity Framework.

He usado LINQ to SQL en proyectos pequeños, y es bastante bueno como una capa de datos liviana y consideraría usarlo nuevamente en proyectos de tamaño similar. La implementación de LINQ en sí misma es realmente buena y, hasta hace poco, mucho mejor que el proyecto NHibernate LINQ. En el proyecto más grande en el que utilicé L2S, me resultó difícil encontrar un patrón de unidad de trabajo con el que estuviese satisfecho, debido a las limitaciones con la clase L2S 'DataContext'. Intentar implementar algo como 'Sesión por solicitud' con L2S parece muy difícil o imposible.

Tampoco consideraría realmente L2S como un verdadero ORM, ya que realmente no le da muchas opciones de mapeo. El diseño de su clase realmente necesita seguir el esquema de su base de datos (tabla por clase) de lo contrario luchará con usted en cada paso del camino. Otra cosa que no me gusta de L2S es la necesidad de usar tipos específicos ( EntitySety EntityRef) para manejar colecciones, referencias y carga diferida. Esto significa que no es posible mantener su modelo de dominio ORM agnóstico sin agregar otra capa de abstracción.

Mi otro problema con L2S es la dependencia exclusiva de LINQ para generar consultas. El proveedor LINQ está muy bien escrito y, en general, crea un SQL decente para la mayoría de las consultas, pero me preocupa que haya consultas más complejas que no se pueden expresar bien con LINQ. Al usar L2S, básicamente tiene que volver a llamar a procedimientos almacenados en estos casos, mientras que (por ejemplo) NHibernate tiene varias API (proveedor LINQ, QueryOver, HQL, etc.) que se pueden usar cuando desea más control sobre el SQL generado.

En la defensa de L2S sobre NHibernate, hay mucho menos gastos generales para ponerlo en marcha en un proyecto.

richeym
fuente
2

No está muerto, ya que todavía funciona, pero si no se está desarrollando aún más, entonces puede tener sentido pasar a otra cosa.

Sin embargo, si funciona para su aplicación, no tiene sentido cambiar por el simple hecho de cambiar.

ChrisF
fuente
2

más estable que muerto en mi humilde opinión:

http://www.thinqlinq.com/default/LINQ-to-SQL-enhancements-for-2010.aspx

http://jonkruger.com/blog/2009/06/06/linq-to-sql-is-not-dead/

Han trasladado su esfuerzo de mejora a Entity Framework, donde realmente es necesario para que ese producto tenga éxito. No espere nada nuevo, pero la compatibilidad y la corrección de errores en linq2sql por un tiempo.

Este sitio se ejecuta con una gran cantidad de linq2sql si no me equivoco.

Cuenta
fuente
+1 para "estable" La mejor manera de ver L2S, en mi humilde opinión. Estable y ya no se extiende / cambia.
quentin-starin
Lo sentimos, pero "nada nuevo, pero la compatibilidad y la corrección de errores" significa que está en contención. Eso es básicamente una garantía de que la comunidad se alejará de él, no verá muchos proyectos nuevos usándolo y, por lo tanto, probablemente tampoco quiera usarlo en proyectos nuevos. "Muerto" no significa que no funcione, solo significa que hay poca innovación o interés.
Jeremy
Desde el punto de vista de una gran empresa, el hecho de que el núcleo ya no se modifique significa que finalmente puede ir a la lista de técnicas aprobadas en muchos casos. En mi línea de trabajo, hemos estado esperando esto por algún tiempo. EF todavía es demasiado volátil para saltar y L2S siempre atraerá interés en situaciones en las que no se desea la sobrecarga de EF.
Bill
@ Jeremy ¿La gente todavía usa TeX?
alternativa
1

Es extraño, pero he visto muchas veces esta fraseología ("LINQ2SQL está muerto") y no estoy seguro de dónde proviene *. Es igual de muerto que Windows XP. Microsoft ha descontinuado el soporte y ha creado algo nuevo (y en mi opinión mejor), sin embargo, las personas aún pueden usar XP de la misma manera que pueden usar Linq2SQL. Es cierto que uso Linq2SQL al crear módulos DotNetNuke personalizados. Sin embargo, con nuevas características en EF4 como code-first-development ( http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx ) es difícil encontrar razones para seguir con Linq2SQL. No veo una razón para revisar y actualizar el código, pero para el nuevo código no sé por qué no querría usar EF4.

* Sin embargo, con toda honestidad, estoy muy ... obsesivo con la semántica. Pido disculpas si es molesto para los demás :)

Jetti
fuente