所以,如果我直接或通过使用此查询db.ExecuteCommand()
一切都将正常工作;
update Market..Area set EndDate = NULL where ID = 666 and NID =1 and Code = 36003
但是,我似乎在LINQ这样做是为了SQL,我已经尝试了几种不同的方法,所有看起来像他们应该工作,这里是一个示例:
var s= db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);
s.EndDate = null;
db.SubmitChanges();
我不知道什么尝试得到这个工作。
编辑
我只是试图编辑一个项目
有没有在区表中定义的主键? LINQ的2 SQL不会作出更新的表没有定义主键。 (而且,据我的记忆,它会悄悄地失败)。
没有内置的方法做批量更新。 但是,你可以挑选一些批次的扩展这个博客 。
你的语法似乎是正确的。 我能想到的唯一的其他东西会导致失败,如果你正在尝试做相同的数据范围内的多个更新程序。 尝试这个:
using (DataContext db = new DataContext())
{
var s = db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);
s.EndDate = null;
db.SubmitChanges();
}
你想更新多个项目? 即使不是,你可以写类似:
IQueryable<Area> iArea =
from s in db.Area
where s.ID == 666 && s.Code == 36003 && s.NID == 1
select s;
iArea.ToList().ForEach(item => { item.EndDate = null; });
db.SubmitChanges();