【发布时间】:2011-04-14 16:00:56
【问题描述】:
我有一个使用以下方法的 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();
}
}
但是,在某些“随机” 情况下(我看不到任何模式),其中一个字段没有得到更新,如 cmets 中所述。
似乎 LINQ 无法识别该字段的更新,因此它被排除在生成的查询之外。
谁能告诉我如果我在这里遗漏了什么,可能是什么原因造成的和/或我该如何解决?
注意:我没有得到任何异常,也无法在开发场景中验证这种情况。
【问题讨论】:
-
可以复制粘贴实际代码吗?
标签: c# asp.net-mvc linq-to-sql sql-server-2000 datacontext