Linq要sql部分更新?

时间:2009-07-02 19:59:43

标签: linq-to-sql

是否可以通过linq2sql进行部分更新?

如果我只想更新2个字段,我会使用像

这样的sql
update table set col1 = val1, col2 = val2 where id = @id 

我发现“从数据库中获取它,更改它然后更新”过程有点,效果很差,如果不是很奇怪的话。

2 个答案:

答案 0 :(得分:1)

是的,您可以在不进行提取的情况下生成更新语句:

Foo foo=new Foo { FooId=fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name="test";
context.SubmitChanges();

请参阅https://stackoverflow.com/a/3351534/52817

答案 1 :(得分:0)

LINQ(语言集成查询)用于查询,而不是完整的CRUD。 LINQ-to-SQL通过典型的对象模型处理更新,删除和创建操作。

由于您已经拥有要更新的对象的ID,我们假设您在LINQ中有该实体对象(例如from item in table where id=1 select item):

myItem.Col1 = "val1";
myItem.Col2 = "val2";

dataContext.SubmitChanges();

这适用于您需要更改特定记录的一次性更新。

如果由于某种原因,您没有原始实体对象但具有ID,则可以通过DataContext执行任意SQL:

dataContext.ExecuteQuery(
    "UPDATE table SET col1={0}, col2={1} WHERE ID={3}", 
    value1,
    value2,
    id);