我正在使用 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
不会t 似乎做它应该做的事。我究竟做错了什么?
谢谢,
萨钦