34

Итак, я новичок как для EF, так и для LINQ. Я понял, как ВСТАВИТЬ и УДАЛИТЬ, но почему-то UPDATE, похоже, скрывает мое понимание.LINQ to Entities, как обновить запись

Вот пример моего кода:

EntityDB dataBase = new EntityDB(); 
Customer c = new Customer 
{ 
    Name = "Test", 
    Gender = "Male 
}; 
dataBase.Customers.AddObject(c); 
dataBase.SaveChanges(); 

выше создает и добавляет запись только штрафом.

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      selext x).First(); 
dataBase.Customers.DeleteObject(c); 
dataBase.SaveChanges(); 

Вышесказанное эффективно удаляет указанную запись.

Теперь, как я могу обновить? Я не могу найти метод «UpdateObject()» в коллекции сущностей.

+0

Если вы используете EF4, я предпочел бы это решение http://stackoverflow.com/questions/623672/update-entity-framework-objects –

ответ

73

Просто измените один из возвращенных лиц:

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      select x).First(); 
c.Name = "New Name"; 
dataBase.SaveChanges(); 

Примечания, вы можете только обновить объект (то, что расширяет EntityObject, а не то, что вы проецируемые использовать что-то вроде select new CustomObject{Name = x.Name}

+0

я сделал что. По какой-то причине он не сохраняет изменения в базе данных. – Chev

+1

Nevermind. Это сработало. Я искал неправильные данные. – Chev

+0

@ Chevex: Обратите внимание, что при использовании другого экземпляра контекста он становится намного более привлекательным. –

3

Они оба трека ваши изменения в коллекции, просто позвоните SaveChanges() метод, который следует обновить БД.

6

// для обновления

(from x in dataBase.Customers 
     where x.Name == "Test" 
     select x).ToList().ForEach(xx => xx.Name="New Name"); 

// для удаления

dataBase.Customers.RemoveAll(x=>x.Name=="Name");