Mi Experiencia con Entity Framework C#

Iniciado por Rex, Noviembre 18, 2019, 12:03:49 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Llevo un buen tiempo diseñando aplicaciones en C#, tanto en WinForms como en ASP MVC. Sólo he llegado a poner en producción algunas aplicaciones para plataformas de escritorio, y para plataformas WEB pues ninguna. Sin tanto rodeo, hace algunos meses diseñe una aplicación básica para una sucursal de ropa urbana y para la base de datos utilice MySQL. El problema empezo cuando me percaté que la versión gratuita no te permite realizar multiples consultas a la vez, por lo cual me obligue a idear la forma de ejecutar consultas de forma lineal -es decir, esperar que termine una para realizar la siguiente-. Al fin de todo, terminé la aplicación pero me lleve en mi mente que aquella aplicación podría colapsar de vez en cuando debido a aquella limitación, pero ya no podía hacer nada sabiendo que el proyecto entero fue realizado con MySQL y migrar a SQL Server ya era muy dificil.

Luego de esto, pase a diseñar otra aplicación de escritorio esta vez utilizando Entity con SQL Server. Esta aplicación fue pequeña y sencilla, por lo tal no me dio problemas y me parecio maravillosa esta herramienta.

Cuando me asignaron un proyecto -el cual aún desarrollo- más grande que todos juntos, no vi problema hasta que migre la base de datos de esta empresa (Miles de registros). Empezé a ver como las consultas con Entity empezaron a ser muy lentas y catastroficas. Era imposible realizar una busqueda en la base de datos y luego intentar hacer cualquier otra cosa. No me había percatado de esto hasta haber puesto a prueba la aplicación con datos masivos.
Afirmo que es mucho más fácil trabajar con Entity porque ya no requieres escribir consultas SQL ni procedimientos, pero al momento en que tratas, por ejemplo, de buscar un cliente por más de 2 argumentos: ID, nombre o D.N.I. Esto tardaba aún más. Ni que decir si escribias una función que recopilaba datos de múltiples tablas, se hacia todo muy lento.

No tengo idea si es porque yo trataba de realizar busquedas complejas con Entity o es porque en verdad esta herramienta se dificulta al momento de trabajar con datos masivos. Mi experiencia fue esta y yo realmente no recomendaría realizar aplicaciones con Entity que conlleven a realizar consultas complejas. Para solucionar este inconveniente en la aplicación que estaba diseñando, tuve que hacer un tipo de aplicación hibrida, que utilizaba Entity para consultas a datos pequeños y trabajar directamente con consultas T-SQL para datos masivos.

Ya que realizar consultas masivas con Entity podría tardar entre 30-60 segundos y hacerlo directamente con las herramientas que provee el módulo de SqlCliente sólo 0-1 segundos.

Esta es mi experiencia y espero saber que no soy el único que la ha pasado mal con esta herramienta.

Hola @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta !

Personalmente desarrollo usando entity framework y base de datos Oracle, si bien coincido con tus argumentos de que entity es lento, no deberia estar siendo tan lento como lo que describes.
Por ejemplo tengo una tabla en la que se hace una busqueda por ID y alguna FK en una tabla de 17 millones de registros y esta no tarda mas de 5 segundos.
Creo que si ves tan lentas las consultas pueda deberse a la falta de indices en los datos mas utilizados de tu tabla.

Entity se usa para busquedas simples y no para procesos complejos, asique en lo cotidiano de mi desarrollo es comun pensar "Debo hacer un Stored Procedure para esta consulta o lo hago con entity?"

Tambien debes tener en cuenta que cuando a una le pasas el .OrderBy(x => x.Fecha), este orderBy puede hacer que la consulta tarde hasta el TRIPLE.

Entonces, no veo mal a Entity, diria que es algo que me gusta utilizar y no lo veo lento, pero para procesos complejos, trabajar directamente desde el lado de la base de datos siempre va a resultar optimo.

Saludos !




Con la fuerza del mar, con la paz del rio