使用LINQ to SQL进行更新

44 linq linq-to-sql

如何根据LINQ to SQL中的特定ID更新记录?

Mar*_*ell 55

LINQ是一个查询工具(Q = Query) - 所以除了通过(面向对象的)数据上下文(在LINQ-to-SQL的情况下)之外,没有神奇的LINQ方法来更新单行.要更新数据,您需要获取数据,更新记录并提交更改:

using(var ctx = new FooContext()) {
    var obj = ctx.Bars.Single(x=>x.Id == id);
    obj.SomeProp = 123;
    ctx.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

或者编写一个在TSQL中执行相同操作的SP,并通过数据上下文公开SP:

using(var ctx = new FooContext()) {
    ctx.UpdateBar(id, 123);
}
Run Code Online (Sandbox Code Playgroud)


spe*_*der 5

在没有更详细的信息的情况下:

using(var dbContext = new dbDataContext())
{
    var data = dbContext.SomeTable.SingleOrDefault(row => row.id == requiredId);
    if(data != null)
    {
        data.SomeField = newValue;
    }
    dbContext.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用Single(pred)代替Where(pred).FirstOrDefault()... (2认同)

Pri*_*lia 2

AdventureWorksDataContext db = new AdventureWorksDataContext();
db.Log = Console.Out;

// Get hte first customer record
Customer c = from cust in db.Customers select cust where id = 5;
Console.WriteLine(c.CustomerType);
c.CustomerType = 'I';
db.SubmitChanges(); // Save the changes away
Run Code Online (Sandbox Code Playgroud)