是否可以通过linq2sql进行部分更新?
如果我只想更新2个字段,我会使用像
这样的sqlupdate table set col1 = val1, col2 = val2 where id = @id
我发现“从数据库中获取它,更改它然后更新”过程有点,效果很差,如果不是很奇怪的话。
答案 0 :(得分:1)
是的,您可以在不进行提取的情况下生成更新语句:
Foo foo=new Foo { FooId=fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name="test";
context.SubmitChanges();
答案 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);