2011-01-25 23 views
6

Para obtener el prototipo de un proyecto en funcionamiento lo más rápido posible, utilicé LINQ to SQL para la persistencia de los datos..NET: Convertir de LINQ a SQL en Entity Framework

Ahora el proyecto es más maduro y estoy corriendo en las limitaciones de concurrencia con LINQ to SQL. Como no es un ORM verdadero, ni fue pensado para uso empresarial, me gustaría reemplazar todo el trabajo LINQ to SQL con la persistencia de Entity Framework.

¿Qué implica esto? ¿Puede alguno de mis trabajos de LINQ to SQL ser actualizado para EF? ¿Tendré que comenzar de nuevo con EF desde cero? ¿Dónde empiezo? ¿Algún enlace o consejo útil?

+3

"ya que no es un verdadero ORM, ni fue diseñado para su uso empresarial" - Stackoverflow se construye utilizando L2S - Yo diría que es listo para la empresa! –

+1

Como dijo @geoff, SO está basado en L2S, por lo que definitivamente se puede usar en la empresa. Lo que podría ser de interés es cuáles son las limitaciones de concurrencia con las que se está ejecutando; puede haber una perspectiva ofrecida aquí que puede ayudarlo a abordar esas cosas sin tener que mudarse a otro ORM mayorista. – casperOne

+0

Ok.stackoverflow se crea utilizando linq a sql y puede usar esto para proyectos empresariales. –

Respuesta

3

Muchas personas están haciendo la misma conversión. Hay una plantilla que puede usar para hacer la conversión aquí http://blogs.msdn.com/b/efdesign/archive/2009/08/13/linq-to-sql-to-entity-framework-conversion-template.aspx

+1

No está claro cómo "muchas" personas están haciendo esta conversión. Si se desplaza hacia abajo en los comentarios, se encuentra este "Mientras que ha habido un cierto interés, hasta ahora el interés no ha sido suficiente para justificar una mayor inversión en este proyecto ..." – DOK

+0

Esto no está funcionando. – Thea

+0

¿Hay alguna versión actualizada de esa plantilla?Tiene 3 años, así que tengo dudas sobre su uso. – Zack

1

Este es un problema bastante difícil y una de las principales razones por las que he estado recomendando evitar a LinqToSql por bastante tiempo. Microsoft no quiere que las personas usen LinqToSql.

Es probable que su mejor opción sea volver a empezar y reutilizar el código cuando/si puede (algunas de sus consultas de Linq pueden traducirse casi una por una automáticamente, pero incluso eso no es seguro).

LinqToSql es un ORM verdadero, pero con características pobres. LinqToSql puede y es utilizado en la empresa por personas que no requieren funciones avanzadas de ORM.

Probablemente no sea la única persona que seguirá este camino (tratando de "actualizar" de LinqToSql a EntityFramework), pero no está claro en este momento si existe una necesidad en el mercado de buenas herramientas para este tipo de soporte de la migración Dada la dirección de Microsoft cambiando el acceso a los datos cada dos años aproximadamente más de una década, es posible que desee considerar NHibernate como una alternativa a Entity Framework (si le preocupa que Microsoft "termine" Entity Framework como lo hicieron) a LinqToSql).

0

Dudo que algún tipo de conversión automática sea posible. Hay pocas diferencias. Lo peor es la forma de llamar a los procedimientos almacenados con valores de retorno escalares. EntityFramework no devuelve el valor, sino el número de filas afectadas. Esto requiere cambios en su T-SQL. Esto no puede hacerse con ninguna plantilla. Algunas consultas LINQ2SQL no funcionan en EntityFramework y deben modificarse. Hay una diferencia molesta en la pluralización. EF intenta ser tan inteligente. Table UserInfoes se pluraliza como UserInfoes mientras L2SQL UserInfos. Table Persons está pluralizado como Poeple en lugar de Persons. Entonces necesitas cambiar esta pluralización también. Si utiliza algún trabajo avanzado con conexiones (no use cadena de conexión), puede simplemente actualizarlo. DBConnection no es compatible con EntityConnection. También necesita volver a escribir esta capa de su aplicación. Mucho trabajo duro para la plantilla de conversión.

Cuestiones relacionadas