使用LINQ to SQL执行更新/套(Using LINQ to SQL to perform a

2019-09-25 20:49发布

所以,如果我直接或通过使用此查询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();

我不知道什么尝试得到这个工作。

编辑

我只是试图编辑一个项目

Answer 1:

有没有在区表中定义的主键? LINQ的2 SQL不会作出更新的表没有定义主键。 (而且,据我的记忆,它会悄悄地失败)。



Answer 2:

没有内置的方法做批量更新。 但是,你可以挑选一些批次的扩展这个博客 。



Answer 3:

你的语法似乎是正确的。 我能想到的唯一的其他东西会导致失败,如果你正在尝试做相同的数据范围内的多个更新程序。 尝试这个:

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();
}


Answer 4:

你想更新多个项目? 即使不是,你可以写类似:

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();


文章来源: Using LINQ to SQL to perform an update/set