LINQ to Entities, как обновить запись - PullRequest
39 голосов
/ 06 января 2011

Хорошо, я новичок в EF и LINQ.Я понял, как вставлять и удалять, но по какой-то причине UPDATE, кажется, ускользает от моего понимания.

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

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()" в коллекции сущностей.

Ответы [ 3 ]

82 голосов
/ 06 января 2011

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

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}

7 голосов
/ 10 апреля 2014

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

(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");
3 голосов
/ 06 января 2011

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

...