Мой код довольно прост:
Context.AddObject("EntitiesSetName", newObjectName);
Context.SaveChanges();
Сработало нормально, но только один раз — первый. Тогда я прервал свою программу по Shift+F5 после того, как SaveChanges() был отслежен. Это был процесс отладки, поэтому я вручную удалил вновь созданную запись из БД и снова запустил программу в режиме отладки. Но больше не работает — «зависает» при вызове SaveChanges().
Еще одна странная вещь, которую я вижу: если я пишу до того, как addObject() и SaveChanges() вызываются что-то вроде:
var tempResult = (from mydbRecord in Context
where Context.myKey == 123
select mydbRecord.myKey).Count();
// 123 is the key value of the record that should be created before the program hangs.
tempResult будет иметь следующее значение: 1.
Итак, вроде бы запись создана (когда программа зависла) и теперь существует, но когда я проверяю БД вручную другими средствами - ее нет!
Что я делаю неправильно? Это какая-то проблема с кешем или что-то еще?
ИЗМЕНИТЬ:
Я нашел источник проблемы. Это была проблема вовсе не EF, а проблема инструмента, который я использую для управления базой данных вручную (Benthic).
Моя программа попадает в какой-то тупик (когда я вызываю SaveChanges()) с инструментом, когда инструмент подключен к той же БД.
Итак, проблема в области синхронизации, имхо, так что мой вопрос можно пометить как решенный.