У меня есть задача, которая занимает довольно много времени. Поэтому я бы хотел, чтобы несколько программ / потоков / компьютеров выполняли одну и ту же задачу, чтобы ускорить процесс. Каждое задание требует уникальных идентификаторов, которые хранятся в БД, поэтому я подумал, что эти идентификаторы могут быть получены следующим образом:
NHibernateSession.Current.BeginTransaction(IsolationLevel.Serializable);
list = NHibernateSession.Current.CreateCriteria<RelevantId>().SetFirstResult(0).SetMaxResults(500).List<RelevantId>();
foreach (RelevantId x in list)
{
RelevantIdsRepository.Delete(x);
}
NHibernateSession.Current.Transaction.Commit();
К сожалению, через некоторое время возникает исключение, если к базе данных обращается несколько процессов (количество удаленных объектов не совпадает с размером пакета). Почему это? Уровень изоляции БД должен быть в порядке, не так ли? Спасибо.
С наилучшими пожеланиями,
Christian