Alcance del problema: Deseo utilizar EF4.1 sin ninguna contrapartida a la velocidad y fiabilidad del Enterprise Library Bloque de acceso a datos que conozco y en el que confío.Entity Framework 4.1 vs Enterprise Data Application Block Rendimiento máximo
Gracias a muchos enlaces y blogs de Stackoverflow sobre la optimización del rendimiento de EF, estoy publicando de esta manera, entre muchas otras cosas, para usar EF4.1 que coincida con el rendimiento del bloque de acceso a datos ADO/Enterprise Lib (SqlDataReader).
El proyecto: 1. No linq a Entidades/sql dinámico. Me encanta linq, solo trato de usarlo contra objetos en su mayoría. 2. 100% de los procedimientos almacenados y sin seguimiento, sin fusión, y lo más importante, nunca llame a .SaveChanges(). Simplemente llamo al proc insertar/actualizar/eliminar DbContext.StoredProcName (params). En este punto, hemos eliminado varios de los elementos de desarrollo rápido de EF, pero la forma en que crea automáticamente un tipo complejo para el proceso almacenado es suficiente para mí.
El GetString y métodos similares son una AbstractMapper que simplemente pasa a través de los tipos previstos y arroja el datareader en el tipo.
Así que esta es la marca a batir en lo que a mí respecta. Sería difícil adoptar algo que sé que es más lento.
Eso es más lento !!! ¡Mucho más lento!
Eso es más como él !! Performance Pie Según mis resultados, el pastel de rendimiento debería aumentar la sobrecarga de seguimiento en más del 1% ¡Intenté pre compilar las vistas y nada aumentó tanto como el seguimiento! ¿¿Por qué?? Tal vez alguien pueda hablar sobre eso.
Por lo tanto, este no es realmente justo para comparar con Enterprise Lib, pero estoy haciendo una llamada sin tiempo a la base de datos para cargar los metadatos que entiendo se cargan una vez por grupo de aplicaciones IIS. Esencialmente una vez en la vida de tu aplicación.
estoy usando EF de esta manera con la generación automática almacenado procedimiento utilizado y LINQ a Edmx de importación automática de todos estos nodos de función edmx para asignar a las entidades. Luego genero automáticamente un repositorio para cada entidad y un motor.
Como nunca llamo a SaveChanges, no me molesto en tomar el tiempo para asignar a los procesos almacenados en el diseñador. Toma demasiado tiempo y es fácil romperlo y no saberlo. Así que solo llamo a los procs desde el contexto.
Antes de implementar esto en mi nueva aplicación web de entrega de equipos médicos de misión crítica, agradecería cualquier observación o crítica.
Gracias!
He estado usando esto por un par de meses y que está funcionando muy bien, pero por una cosa. EF no es de control de origen ni es fácil de combinar. Si algún cuerpo está en la valla acerca de EF, creo que el rendimiento no es el problema principal. EF actualiza el .edmx completo y también almacenó el diagrama xy ubicaciones en .edmx haciendo que el archivo sea extremadamente difícil de fusionar. Incluso tengo notamos que los mismos nodos xml sin cambios aparecen miles de líneas, aparte de dos desarrolladores diferentes. Code Smith resolvió este problema con PlinqO y MS también. – TheDev6