net - ¿Qué elegirías hoy para tu capa de datos, Linq o Subsonic?
mvc linq c# (8)
¿Qué hay de NHibernate? ¿Está realmente fuera de lugar para nuevos proyectos? Aún así, las personas que vengan de Java lo encontrarán familiar y también pueden usarlo con .NET 2.0 y Mono.
Estamos listos para comenzar un nuevo proyecto en el trabajo, sin código heredado. Usamos Subsonic en el pasado y estamos muy contentos con eso. Pero eso fue antes de Linq.
¿Alguien ha tenido que enfrentar este mismo problema (Linq x subsónico)?
¿Cuál fue tu decisión? ¿Cuáles fueron las razones?
Cualquier idea apreciada.
El mayor riesgo con linq a sql es que Microsoft se cansará de él y lo abandonará. Hay mucha especulación de que esto ya ha sucedido y que solo se actualizará el marco de la entidad. Subsónico no sufre de esto y peor caso tiene el código fuente para hacer sus ediciones.
Es posible que desee ver qué pasa cuando MS deja de desarrollar LINQ a SQ L, ya que parece estar sucediendo. La última versión de SubSonics es más fácil de crear consultas y más legible, luego su versión anterior.
Lo único que me encanta de LINQ, que no creo que maneje SubSonic con tanta gracia, es tratar automáticamente las uniones.
FROM a in db.Orders
where a.Total > 100
SELECT new {a.Item.Desc, a.Customer.Name};
generará automáticamente SQL como thisL
select i.DESC, c.NAME
from ORDERS o
inner join ITEMS on o.ItemID = i.ItemID
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID
where o.TOTAL > 100
Yo estaba en la misma situación. LinQ es más "Visual", haces todo dentro de vstudio, e incluso Rob admite que subssonic tiene algunas cosas para que coincida.
IEnumerable, LINQDatasource (con paginación automática) y el modelado visual me han convencido para elegir Linq sobre Subsonic.
Fui con Linq porque está integrado en el marco. Para aquellos que dicen que no será compatible con Microsoft ... es LinqToSql el que se eliminará. Creo que uno de los planes es absorberlo en el Marco de la Entidad.
Ahora estoy usando Entity Framework. También utiliza linq y, básicamente, es exactamente como linqToSql con más flexibilidad y potencia si decide usarlo.
Tiendo a evitar frameworks y orms de terceros porque eventualmente mueren también. Creo que tienen más posibilidades de morir porque su vida proviene de cuántas personas están interesadas en ella y la usan. Su vida también depende mucho de su autor / colaborador principal.
Mi experiencia ha sido primaria con SubSonic. Es muy fácil de implementar y tendrá su DAL completado en menos de media hora. Tenga en cuenta que esta es una navaja suiza, ya que está diseñada para la utilidad. Básicamente se obtiene una clase generada por tabla, así como también la capacidad de realizar cargas diferidas para colecciones. También puede ejecutar procedimientos almacenados a través del marco, por lo tanto, si tiene estructuras de datos complejas, puede obtenerlas de la base de datos y actualizar una clase que realice manualmente.
Lo he usado en 5 grandes proyectos ahora, y estoy impresionado con la rapidez con que me volví dependiente de él.
Subsónico
Pros:
- Agradable y simple
- Andamio
Contras:
- Las firmas de método a menudo aceptan parmes de cadena (aunque se recomienda usar constantes de cadena DAO) que pueden ser objeto de abuso.
Tenga en cuenta:
- Requiere un proyecto de sitio web para generación de modelos sin intervención del código (necesita BuildProvider).
Linq a SQL
Pros:
- Azúcar sintáctico en el IDE
- MS compatible
- Ver el SQL que se ejecutará en el IDE
- Permite diferentes niveles de manipulación en el modelo, desde la generación automática hasta las definiciones explícitas hasta las propiedades del objeto.
Contras:
- Complejo. Necesita aprender nuevos conceptos como DataContext para ser efectivo.
Tenga en cuenta:
- Algunos usuarios de cuestionan el soporte continuo de Linq a SQL .
También evalúe el marco de la entidad ADO.NET y aquí .