Mi proyecto actual requiere la sincronización diaria con el sistema externo. La sincronización se basa en una estructura compleja de archivos de importación que se analiza y procesa con una amplia lógica comercial. Debido a la lógica comercial, decidimos hacer esto en código .NET y reutilizar los componentes BL existentes en lugar de escribir la misma lógica en procedimientos almacenados o servicios de integración.Comandos de base de datos por lotes en Entity Framework 4.0
La capa BL se encuentra sobre la capa de acceso a datos EF 4.0. El proceso de implementación actual incluye el lote de importación, rellena todos los cambios en ObjectContext y ejecuta SaveChanges en la transacción. Cuando verifico SQL profiler, veo que EF ejecuta cada cambio de entidad como un solo comando SQL (con su propio viaje de ida y vuelta a DB). Además, parece que estos comandos se ejecutan de forma totalmente secuencial. Así que tengo hasta 100.000 viajes de ida y vuelta a la base de datos para la importación inicial y entre 10.000 - 50.000 viajes de ida y vuelta a la base de datos para la sincronización diaria.
¿Es posible insertar/actualizar/eliminar comandos por lotes de alguna manera por EF mismo o por algún proveedor/extensión?
Así que tendré que vivir con mi solución actual porque reescribir la solución no es una opción. :( –
Sí. EF no está diseñado para el trabajo por lotes. Y especialmente algo así como un "lote de importación": es una preocupación de la base de datos, no una preocupación ORM. Ni siquiera estaría usando EF para esto, tendría un servicio separado (por ejemplo, WCF - alojado como servicio de Windows) cuya única responsabilidad sería importar estos datos masivos cuando se requiera sincronización. separación de inquietudes. mi proyecto anterior también requería sincronización de DB con el nuestro y externo. usamos el servicio de Windows (antes wcf días). – RPM1984