2008-10-30 3 views
7

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.¿Qué elegirías hoy para tu capa de datos, Linq o Subsónico?

¿Alguien ha tenido que enfrentar este mismo problema (Linq x Subsónico)?

¿Cuál fue su decisión? ¿Cuáles fueron las razones?

Cualquier idea apreciada.

+0

¿Quiere decir LINQ o LINQ to SQL? Porque SubSonic es compatible con LINQ desde 3.0. –

+0

Cuando hice la pregunta, el pasado mes de octubre, Subsonic estaba en la versión 2.1 (no Linq). Supongo que la pregunta actualizada debe ser LinqToEntities x Subsonic 3.0.0.3 (a partir de ahora). – nandos

+0

Entity Framework ofrece un rendimiento significativamente mejor que Subsonic: http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic – Tim

Respuesta

11

SubSonic

Pros:

  • agradable y sencillo de
  • Andamio

Contras:

  • firmas método a menudo aceptan parms cadena (aunque es recomendable que utilice las constantes de cadena DAO) que pueden ser objeto de abuso.

tener en cuenta:

  • Requiere proyecto de sitio web sin código, generación de modelos de no intervención (necesita la BuildProvider).

LINQ to SQL

Pros:

  • azúcar sintáctica en el IDE
  • MS apoyaron
  • Ver el SQL para su ejecución en el IDE
  • permite diferentes niveles de manipulación en el modelo, desde autogeneración a definiciones explícitas hasta objec t propiedades.

Contras:

  • complejos. Necesita aprender nuevos conceptos como DataContext para ser efectivo.

tener en cuenta:

También evalúe ADO.NET Entity Framework y here.

+0

Tenga en cuenta que las páginas de datos dinámicos de ASP.NET MVC crean un andamio muy similar a SubSonics, pero basado en LINQ. –

+1

Su primer contras de SubSonic no es cierto, esa es solo una forma de hacerlo. También puede ejecutar sonic.exe o SubStage.exe para generar clases parciales que luego debe incluir en su proyecto DAO en la solución. –

+0

Por generación automática quiero decir sin intervención. Los objetos de datos en memoria me sorprendieron cuando los vi por primera vez y luego me sentí un poco defraudado por la realidad. No es gran cosa. Creo que SubSonic patea un poco. Tal vez no es una estafa tanto como un "asegúrese de mirar más allá del embalaje brillante"? –

3

Lo único que me encanta de LINQ, que no creo que maneje SubSonic con tanta gracia, es tratar automáticamente con combinaciones.

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 
0

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.

+0

Creo que esto no tiene sentido.En primer lugar, hay "LINQ" (sintaxis), "LINQ to SQL" y "LINQ to Entities". Los dos últimos son básicamente generadores de código para crear objetos DataContext utilizados por la sintaxis LINQ. La sintaxis LINQ no va a desaparecer; gran parte de C# 4 se basa en ella. La actualización de generadores de código es menor. –

+0

I ment "linq to sql" su línea derecha no va a ninguna parte. Esta última publicación del blog ADO.NET respaldaría esta posición http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities- roadmap.aspx –

0

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 Subsónico.

1

¿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.

0

Es posible que desee ver lo que sucede cuando MS stops developing LINQ to 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.

1

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.

1

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.

Cuestiones relacionadas