mam 2 różne jednostki pracy: jeden oparty na ADO.NET, wywołanie procedury przechowywane głównie (uowADO
) i jeszcze jeden przy użyciu Entity Framework 6 (uowEF
), ostatnio dodane w celu wspierania Oracle db, więc nie muszę przepisywać wszystkich SP (moja wiedza jest tam ograniczona).Jak zaprojektować jednostkę pracy, aby obsługiwać operacje zbiorcze i zapewniać większą wydajność?
Więc warstwy biznesowej jest ładowanie tylko jeden z nich (w zależności od konfiguracji) podczas wykonywania operacji na bazie danych (ale nie mogę z nich korzystać równolegle, ponieważ uowADO
nie obsługuje Oracle)
Po dodaniu nowego uowEF
Zauważyłem duże problemy z wydajnością, oczywiście głównie w operacjach masowych.
Zasadniczo mam tylko Commit
i Rollback
metody na obecnym IUnitOfWork
... teraz bardzo blisko tego, co ten article zaleca.
Więc, mam zamiar przerobić tę jednostkę pracy. Na przykład, czytałem o wyłączaniu dbContext.Configuration.AutoDetectChangesEnabled
czasami, gdy są zaangażowane operacje zbiorcze, i inne wskazówki dotyczące optymalizacji dotyczące EF, które mogą pomóc.
Niestety nie jestem pewien, w jaki sposób zaprojektować taką jednostkę pracy, aby to generic tak, że mogę go używać we wszystkich przypadkach z BL i dla obu warstw danych dostępowych: ADO.NET i EF.
Wszelkie przemyślenia, rekomendacje, dobre linki na ten temat?
Wzór zdarzeń domeny, ewentualna spójność. Ale nie jest to łatwe, jeśli nie znasz DDD i architektur sterowanych zdarzeniami. – MikeSW