开发者

Using LINQ to SQL to perform an update/set

So, if I use this query directly or by using db.ExecuteCommand() , everything wil开发者_如何学编程l work fine;

update Market..Area set EndDate = NULL where ID = 666 and NID =1 and Code = 36003

However, I cant seem to do this in LINQ to SQL, I've tried a few different methods that all seem like they should work, here is an example of one:

var s= db.Area.Single(s => s.ID == 666 && s.Code == 36003 && s.NID == 1);
s.EndDate = null;
db.SubmitChanges();

I dont know what else to try to get this working.

EDIT

I am only trying to edit ONE item


Is there a primary key defined on the Area table? Linq 2 SQL will not make an update to a table without a primary key defined. (And, as far as I can remember, it will fail silently).


Do you want update more than one item? Even not you can write something like:

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


There is no built in method for doing batch updates. But you can pick some batch extensions from this blog.


Your syntax appears to be correct. The only other thing I can think of which would be causing the failure is if you are trying to do multiple updates within the same data context. Try this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜