使用Linq Sql从表更新列的有效方法?

时间:2015-01-04 10:35:27

标签: c# entity-framework linq-to-sql

在Sql中,例如我会这样做:

UPDATE MyTable SET MyColum='value' WHERE Id=132

EF Code First数据库中的等价物怎么样?

UPDATE:

看到回复,我需要澄清我的问题。我正在寻找一种更新一列的有效方法。如果我使用Single()或任何类似的函数,性能非常差,原因有两个:1)有2个SQL语句,一个用于SELECT,一个用于UPDATE,2)Single函数检索所有列。

UPDATE MyTable SET MyColum='value' WHERE Id=132

上述句子是有效的,因为它只是一个事务,并且没有值从服务器发送到客户端。我希望哪个是Linq Sql中的等效句子。

2 个答案:

答案 0 :(得分:1)

如果存在于db中,SingleOrDefault将返回该对象,否则返回null:

var row = context.MyTable.SingleOrDefault(x => x.id == 132);
if(row != null) {
  row.MyColumn = "Value";
  context.SaveChanges();
}

答案 1 :(得分:0)

我认为一次交易是不可能的。您首先要检查要更新的行是否在您的表中

using (MyEntities me=new MyEntities())
{
     if( (from t in me.MyTables where mt.Id == 132 select t).Any())
     {    
         MyTable mt= (from t in me.MyTables where mt.Id == 132 select t).Single();
         mt.MyColumn= "Value";
         me.SaveChanges();
     }
}