在Sql中,例如我会这样做:
UPDATE MyTable SET MyColum='value' WHERE Id=132
EF Code First数据库中的等价物怎么样?
看到回复,我需要澄清我的问题。我正在寻找一种更新一列的有效方法。如果我使用Single()或任何类似的函数,性能非常差,原因有两个:1)有2个SQL语句,一个用于SELECT,一个用于UPDATE,2)Single函数检索所有列。
UPDATE MyTable SET MyColum='value' WHERE Id=132
上述句子是有效的,因为它只是一个事务,并且没有值从服务器发送到客户端。我希望哪个是Linq Sql中的等效句子。
答案 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();
}
}