Ефективен начин за актуализиране на колона от таблица с помощта на LinqSql?

В 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.


person Dabiel Kabuto    schedule 04.01.2015    source източник


Отговори (2)


SingleOrDefault ще върне обекта, ако съществува в db, или null в противен случай:

var row = context.MyTable.SingleOrDefault(x => x.id == 132);
if(row != null) {
  row.MyColumn = "Value";
  context.SaveChanges();
}
person ilans    schedule 04.01.2015
comment
Може би си струва да се добави, че това работи само когато Id е уникален и съществува, ще се срине, ако няма точно един ред. - person DaveShaw; 04.01.2015

Мисля, че не е възможно с една транзакция. Първо трябва да проверите дали редът, който искате да актуализирате, е във вашата таблица или не

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();
     }
}
person mohsen    schedule 04.01.2015