У меня возникли некоторые проблемы с синхронизацией в модульном тесте некоторых моих vb-кодов.
Я настроил тестовый жгут, проверяя и затем удаляя записи, добавленные в БД в предыдущем сеансе тестирования,и затем я проверяю код добавления моей записи, добавляя обратно те же записи.
Интересно, что этот код работает нормально, когда в отладчике происходит разрыв, но происходит сбой с исключением «дублирующий ключ», когда я запускаю его сбез перерывов, что приводит меня к мысли, что существует какая-то проблема параллелизма.
Основной метакод выглядит следующим образом:
DoTest()
dim j as datacontext
dim recs = from myrecs in j.mythings select myrecs where myrecs.key="key1" or
myrecs.key = "key2"
if recs.count > 0
for each rec in myrecs
j.mythings.deleteonsubmit(rec)
next
j.submitchanges()
end if
j.dispose
dim tc as new tablecontroller()
tc.addrecordtomytable("key1","value1")
tc.addrecordtomytable("key2","value2")
end
Class tablecontroller
Sub addrecordstomytable(key as string, value as string)
dim j as new mydatacontext
dim thing as new mything
thing.key = key
thing.value = value
j.mythings.addonsubmit(thing)
j.submitchanges
j.dispose
end sub end class
I 'Мы подтвердили, что я правильно удалил предыдущие добавленные записи, и это прекрасно работает, как и добавление новых записей, когда у меня есть разрыв в коде, прежде чем я нажму на шаг добавления записей.но без перерыва он генерирует дубликаты исключений ключа в методе "addrecordestomytable", предполагая, что он не получил текущую версию таблицы при создании нового контекста данных в addrecordstomytable, даже если записи уже должны были быть удалены.
Я попытался обновить таблицу, но, похоже, это тоже не сработало.
Примечание. База данных поддержки - это ms sql server 10
Предложения?