因此,如果我直接使用此查询或使用db.ExecuteCommand()
,一切都会正常工作;
update Market..Area set EndDate = NULL where ID = 666 and NID =1 and Code = 36003
但是,我似乎无法在LINQ to SQL中执行此操作,我尝试了一些看起来应该工作的方法,这里有一个示例:
var s= db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);
s.EndDate = null;
db.SubmitChanges();
我不知道还有什么可以让它发挥作用。
修改
我只想编辑一个项目
答案 0 :(得分:1)
Area表上是否定义了主键? 如果没有定义主键,Linq 2 SQL将不会更新表。 (而且,据我所知,它将无声地失败)。
答案 1 :(得分:0)
您想要更新多个项目吗?即使不是,你也可以这样写:
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();
答案 2 :(得分:0)
没有用于进行批量更新的内置方法。但您可以从this blog中选择一些批量扩展程序。
答案 3 :(得分:0)
您的语法似乎是正确的。我能想到的唯一可能导致失败的事情是,如果您尝试在同一数据上下文中进行多次更新。试试这个:
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();
}