2009-05-21 12 views
20

Tengo un proyecto que implementó Linq To SQL, y estaba muy contento con él. Durante bastante tiempo, el mayor problema fue que el diseñador tenía problemas.¿Alguien más se arrepiente de usar Entity Framework?

Por desgracia, mi proyecto ahora requiere múltiples herencia de tablas, y LINQ to SQL no lo soporta. Decidí cambiar a Entity Framework cuando descubrí que admite herencia múltiple y parece ser la dirección en la que se dirige Microsoft. Pero ahora estoy empezando a arrepentirme de esa decisión.

Por ejemplo, llamando Load()? WTF? ¡Si no quisiera esos datos, no los estaría pidiendo! Descubrir todas las peculiaridades anales de Entity Framework se está convirtiendo en una gran espina en mi costado.

En fin ... ¿hay una luz al final del túnel? Cuando termine, ¿valdrá la pena usar EF, o tomé una decisión terrible?

Por último, me gustaría preguntar: ¿dónde ha sido Microsoft con todo el asunto ORM? ActiveRecord de Rails ha estado funcionando de manera hermosa y sencilla durante años.

+1

No es una respuesta per se, pero probablemente sea una solución; ActiveRecord ... –

Respuesta

11

Usted no está solo en su dolor. Ha habido a series of posts on the ADO.NET blog discutiendo las mejoras que se están realizando en Entity Framework en .NET 4.0. Parecen ser bastante importantes, pero ya sea que sean suficientes o no para sus necesidades, solo usted puede juzgar.

+0

Gracias por el enlace. Definitivamente parece que están cambiando sus objetivos en una dirección positiva. Y parece que están planeando usar cargas perezosas de una manera accesible. – grimus

7

Bueno, el VS2010 beta is available; podrías girar una máquina virtual y ver si EF en 4.0 te queda mejor?

Personalmente, me he quedado con LINQ-to-SQL por ahora, pero probablemente porque todavía no he necesitado ninguna de las otras características.

+0

+1 para el consejo de L2S: estoy 100% contigo en eso. En cuanto a EFv4: en cuanto a las características, están progresando con EF (aunque me tomó exactamente 20 segundos convertir el modelo de EF en inutilizable con el asistente de "versión de la base de datos" de VS2010 beta). Sin embargo, estoy más preocupado por el SQL generado por EFv4: en la primera ronda de pruebas que he realizado, no han corregido (todavía) los errores del generador de SQL que generan consultas de monstruos con muchas combinaciones redundantes, etc ... ... bueno, sigue siendo beta así que tal vez EFv4 RTM sea mejor ... – KristoferA

3

estoy realmente ansioso por utilizar Entity Framework en su versión v4 con suerte muy pronto ahora. Por supuesto, en nuestro caso, se trata de deshacerse de un ORM horrible en la casa que ya no es compatible, lo que es peor que la peste, ¡así que EF v4 parece una bendición para mí! :-)

Marc

3

mi parte haber sido decepcionado con acritud EF v1.0. Prometió mucho, pero en realidad era extremadamente restrictivo, funcionaba horriblemente y no era compatible con aplicaciones e infraestructuras existentes.

Dicho esto, v2.0 EF se ve muy prometedor. Microsoft ha abierto el proceso de diseño a las masas, lo que nos permite a aquellos de nosotros que deseamos ver el éxito de EF y ver si encaja en la amplia variedad de escenarios de uso que realmente debería ofrecer nuestras sugerencias, consejos y opiniones.

Si está interesado en ver los resultados de este esfuerzo, o si desea proporcionar su propia entrada, que debe salir el blog de EF de diseño, aquí: http://blogs.msdn.com/efdesign/

Al final, si Microsoft todavía no es capaz de producir un ORM flexible que se ajuste a una amplia variedad de escenarios, siempre hay NHibernate. He estado utilizando LINQ to SQL, Entity Framework y NHibernate por un tiempo, y de los tres, NHibernate es el marco más amigable, flexible y maduro. No tiene mucho en el camino de los diseñadores visuales, pero si está frustrado por las limitaciones, peculiaridades, comportamiento extraño y mal desempeño de EF, NHibernate es una gran alternativa.

+1

Gracias por el consejo. Creo que si tuviera que comenzar el proyecto otra vez, me hubiera ido por NHibernate desde el principio. – grimus

2

actuaciones consecutivas:

he renunciado por el momento en el marco de la entidad. La reescritura de código ha sido tramatizante y no estoy del todo contento con el resultado ... muy grande debido a la falta de soporte de carga diferida.

He decidido volver a Linq a SQL y probar la herencia de tabla única por ahora. No tenemos muchos tipos de niños, por lo que, por el momento, debería ser una solución fea pero aceptable. Cuando se publique la nueva versión de VS y Entity Framework, consideraré cambiar de nuevo en ese momento porque los cambios para la nueva versión parecen prometedores.

+0

También comencé con EF, y decidí volver al viejo Linq2Sql. No solo se han eliminado las peculiaridades, Linq2Sql también crea SQL mejor/más rápido en algunos casos (EF no usa la instrucción LIKE por ejemplo). – Gidon

3

Estoy totalmente de acuerdo. La carga lenta es lo que mató el marco de la entidad para mí. Simplemente abre una lata de gusanos con adjuntar y separar entidades a la instancia de contexto. Realmente no quiero preocuparme por estas cosas. Pero entonces, ¿quién no ha trabajado antes con un producto a medias de Microsoft? Me alegro de que vayan a arreglar las cosas en un nuevo lanzamiento. Hasta entonces, L2S parece ser tu mejor apuesta.