Ho 2 diverse unità di lavoro: una basata su ADO.NET , chiamando le stored procedure per lo più (uowADO
) e un altro con Entity Framework 6 (uowEF
), aggiunto di recente al fine di sostenere Oracle db, in modo che non debba riscrivere tutti gli SP (la mia conoscenza è limitata lì).Come progettare l'unità di lavoro per supportare le operazioni di carico e fornire maggiori prestazioni?
Quindi, strato di business sta caricando solo uno di loro (in base alla configurazione) durante l'esecuzione di operazioni su database (ma io non li posso usare in parallelo, perché uowADO
non supporta Oracle)
Dopo aver aggiunto il nuovo uowEF
Ho notato grandi problemi di prestazioni, ovviamente principalmente sulle operazioni di massa.
Fondamentalmente ho solo Commit
e Rollback
metodi sulla corrente IUnitOfWork
per ora ... molto vicino a ciò che questo article raccomanda.
Quindi, sto pensando di rielaborare questa unità di lavoro. Ad esempio, ho letto sulla disattivazione di dbContext.Configuration.AutoDetectChangesEnabled
a volte quando sono coinvolte operazioni di massa e altri suggerimenti di ottimizzazione relativi a EF che possono essere di aiuto.
Purtroppo io non sono sicuro di come progettare tale unità di lavoro per renderlo generico in modo che ho potuto usarlo in tutti i casi da BL e per entrambi i livelli di accesso ai dati: ADO.NET e EF.
Qualche idea, consigli, buoni collegamenti su questo?
Pattern di eventi del dominio, consistenza finale. Ma non è facile se non hai familiarità con le architetture DDD ed event driven – MikeSW