LINQ to SQL字段不会更新(有时)

| 我有一个使用以下方法的MVC Web应用程序:
public class MyController : Controller
{
    public FooRepository fooRepository = new FooRepository();
    public BarRepository barRepository = new BarRepository();

    public ActionResult UpdateItems(int id, int range1, int range2)
    {       
        Foo foo = fooRepository.GetItem(id);
        List<Bar> bars = barRepository.GetItemsByRange(range1, range2);

        // Some validation rules here...

        DoSomeWork(foo, bars);

        // Show confirmation / error message
    }

    private void DoSomeWork(Foo foo, List<Bar> bars)
    {
        foreach(int i = 0; i < bars.Count; i++)
        {
            bars[i].Prop1 = foo.Prop1; // This field is updated
            bars[i].Owner = \"someuser\"; // This one too
            bars[i].Status = BarStatus.SomeStatus; // This isn\'t...
        }
        foo.Status = FooStatus.SomeStatus; // Ok

        // Calls DataContext.SubmitChanges()
        fooRepository.SubmitChanges();
        barRepository.SubmitChanges();      
    }
}
但是,在某些“随机”情况下(我看不到任何模式),如注释中所述,其中一个字段不会更新。 似乎LINQ无法识别该字段的更新,因此将其从生成的查询中排除。 谁能告诉我我是否在这里遗漏了什么东西,可能是什么原因引起的,和/或如何解决? 注意:在开发场景中,我没有任何异常,也无法验证这种情况。     
已邀请:
根据我的经验,如果错误是随机的,并且您无法在开发中重现问题,那就是用户错误。 如果.net框架或CLR只是随机决定以不同的方式进行操作,则编程将非常困难。     
您可能在某个地方浮动了隐式/显式绑定排除
[Bind(Exclude=\"...,Status,...\")]
当然只是猜测     
如果Linq认为Status已经是BarStatus.SomeStatus,则不会更新它。 可能发生的情况是,您找到状态设置为该值的记录,然后其他例程对其进行了更改,然后,如果您使用的是相同的DataContext,则将从缓存副本中获取旧值,因此Linq认为它不需要更新它。     

要回复问题请先登录注册