/ / Алтернатива на преминаване на DbContext обект към паралелна задача - c #, framework-структура, паралелна обработка, dbcontext

Алтернатива на преминаването на обект DbContext към паралелна задача - c #, рамка на предприятието, паралелна обработка, dbcontext

Имам сценарий, който включва изпълнението наедно и също действие за обработка на списък с имейл съобщения. За да ускоря обработката, аз гледам да използвам Parallel.ForEach за моята колекция от пощенски пратки. Цикълът създава инстанция на обработката на моята пощенска пратка (clsMailItemProcess) и предава пощенската пратка към нея и я обработва.

Правилата за обработка на всяка пощенска пратка сасъдържаща се в схема на база данни, която позволява по-лесно конфигуриране на правилата. Има редица правила за идентифициране на референтен номер в имейла, като всяко правило има няколко възможни метода за идентифициране на номера. Задачата прескача правилата и след това обработва имейла, въз основа на който правилото е било съвпадение първо.

Търся някаква помощ за най-добрия начин за използване на DbContext.

  • Трябва ли да го създам извън паралела.За всеки и след това преминете препратка към класа clsMailItemProcess? От това, което чета това може да доведе до проблеми, тъй като DbContext не е безопасно за нишки, което може обясни грешките, които виждам в редки случаи, въпреки че работи без проблеми 95% от времето. Предположих (може би погрешно, че съм нов за EF), че това би намалило обажданията в базата данни)
  • Трябва ли да създам нов DbContext в моя клас clsMailItemProcess и да го използвате в това? Това би увеличило повикванията към базата данни
  • Трябва ли да създам DbContext и да преобразувам неговите правила в обекти, които аз след това може да премине моята молба, ако е необходимо

Трябва да отбележа, че моят DbContext не се променя и няма промени в базата данни.

Отговори:

1 за отговор № 1

Като се има предвид:

Трябва да отбележа, че моят DbContext не се променя и няма промени в базата данни.

Тогава:

Трябва ли да създам DbContext и да преобразувам неговите правила в обекти, които след това мога да прехвърля около моето приложение, както е необходимо

Да. Направи го.


0 за отговор № 2

Ще получа нов DbContext в моя Parallel.За всяко обаждане. Преминаването през контекст към множество нишки може да бъде проблематично, особено ако вашите правила имат някакъв вид странични ефекти по отношение на замърсяването на контекста.

Сигурни ли сте, че това трябва да се направи паралелно? В някои от моите проекти за домашни любимци, където трябваше да реша подобен проблем на работника, щях да имам клас, който да анкетира колекция за промени. е нова работа.

Това ще помогне да се намали сложността (добре, трябваше да), както и да ме изолира clsMailItemProcess код.