Я использую EF 4.2, и у меня возникла проблема, которая возникает совершенно случайно и без предупреждения. У меня есть служба Windows, которая обновляет базу данных. В сервисе у меня стоит таймер. Когда время таймера истекает, вызывается метод. Это основная структура метода.
IEnumerable<Foo> foos = GetFoosFromDB();
foreach (Foo foo in foos)
{
if (some condition)
{
foo.Bar = 1;
}
if (some other condition)
{
foo.Bar = 2;
}
if (yet some other condition)
{
foo.Bar = 3;
}
else
{
int val = GetSomeValueFromDB();
if (val == something)
{
if(GetSomeOtherValueFromDB())
{
foo.Bar = 4;
}
else
{
CallSomeMethodThatAlsoCallsSaveChanges();
foo.Bat = SomeCalculatedValue();
}
}
}
}
SaveChanges();
Теперь проблема в том, что как только мы начинаем работать с базой данных в течение дня и в таблицах этой базы данных есть несколько строк (речь идет только о 100 или 200 строк), то, несмотря на то, что этот метод вызывается, SaveChanges
не кажется, не делает то, что должен делать. Что я делаю не так?
Благодарность,
Сачин
CallSomeMethodThatAlsoCallsSaveChanges
иSaveChanges()
разные экземпляры контекста? - person Gert Arnold   schedule 18.07.2012