Estoy debatiendo qué tecnología utilizar para un próximo proyecto de ASP.NET.¿Aprender LinqToSql o seguir con ADO.NET?
Supuestos:
- Yo estaré usando Visual Studio 2008 SP1 (.NET Framework 3.5)
- El back-end habrá una base de datos SQL Server 2005 (o posiblemente 2008)
- El código se escribirá en C#
- Ya tengo experiencia con LinqToObjects y LinqToXml
- También tengo experiencia con ADO.NET y algunas bibliotecas ya compiladas
- El proyecto es relativamente pequeña
- La página web contará con unos cinco pantallas
- La base de datos tendrá quizás seis o siete mesas
- Habrá tal vez 25-50 usuarios activos
- transacciones por día probablemente lo hará ser aproximadamente 5-10 tops
- datos personales mínimos serán almacenados
- las consecuencias del fracaso o el sitio ser atacado sería mínimo
Opciones: procedimientos almacenados
escribir y los llaman con ADO.NET. Todavía puedo usar LinqToObjects una vez que termine de llenar mi
DataSet
.Aproveche lo que sé de Linq para aprender LinqToSql.
Análisis:
que ya sé cómo hacer la opción 1, pero que realmente me gusta usar LINQ exclusivamente. El problema con la opción 2 es que, de acuerdo con todo lo que he leído, LinqToSql probablemente estará en desuso en favor de Entity Framework.
Preguntas:
¿Cómo es la empinada curva de aprendizaje para LinqToSql si ya está familiarizado con otras tecnologías de Linq?
¿Vale la pena invertir cualquier tiempo en el aprendizaje de LinqToSql, dado que es posible que Microsoft no lo haya desarrollado aún más?
¿Entenderá LinqToSql algún día me ayudará a comprender Entity Framework o son demasiado diferentes?
En última instancia, ¿qué opción recomendaría para mi situación?
Actualización:
no quiero que esto se pierda en los comentarios: marc_s señalaron que LinqToSql es están desarrollando aún más, por lo menos a partir de .NET 4.0. Enlace: http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40.
No sé si esto significa que LinqToSql tiene un futuro después de todo, pero sí hace que el aprendizaje de esa tecnología sea un poco más atractivo.
Una cosa que no pregunté en mi publicación original, pero debería haber sido: ¿Es probable que las fallas en Entity Framework afecten a este proyecto?
Gracias por las respuestas hasta el momento.
Análisis adicional
Aquí está una lista de inconvenientes LinqToSql, sobre la base de algunos de los comentarios a continuación:
- debe actualizar continuamente las tablas y objetos en el diseñador cuando se realizan cambios a la base de datos subyacente. No hay forma de "actualizar" o "sincronizar" para que reconozca automáticamente los cambios.
- El control de versiones se complica por el hecho de que el diseñador no genera los archivos subyacentes en un orden consistente.
- El diseñador LinqToSql genera código diferente de SqlMetal.
- Existen problemas/errores relacionados con la carga ansiosa.
De estos, el elemento 1 es la mayor preocupación para mí. Incluso con un proyecto pequeño, el cambio es inevitable. Recuerdo que una vez traté de usar el diseñador de Windows Forms para mapearlo en una base de datos, y me explotó en la cara tantas veces que lo abandoné a favor de lanzar mis propias clases de ayuda de ADO.NET.
Sin embargo, parece que SqlMetal podría ser capaz de manejar mis necesidades perfectamente. Ejecuto un comando, regenera todo desde cero desde la base de datos, he terminado. Si mantengo mi base de datos simple (solo tablas, sin procedimientos almacenados, vistas o funciones), quizás SqlMetal es todo lo que necesitaré.
_deberá_ estar en desuso en favor de EF? Ya lo es. – Oded
** ** No está muerto: incluso en .NET 4, mejorará Linq-to-SQL. Ver http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40 –
Linq-to-SQL es muy fácil de aprender y muy divertido de usar, no es un XML desordenado cosas como otros ORM, solo un buen diseñador visual; sin mapeos complicados como EF - solo una clase por mesa, y sin sorpresas - ** ¡simplemente funciona **! Y es realmente productivo, en comparación con ADO.NET directo –