LINQ to Entities, как обновить запись
Хорошо, поэтому я новичок в 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()
в коллекции сущностей.
Ответы
Ответ 1
Просто измените одно из возвращаемых объектов:
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}
Ответ 2
//для обновления
(from x in dataBase.Customers
where x.Name == "Test"
selext x).ToList().ForEach(xx => x.Name="New Name");
//для удаления
dataBase.Customers.RemoveAll(x=>x.Name=="Name");
Ответ 3
Оба они отслеживают ваши изменения в коллекции, просто вызовите метод SaveChanges(), который должен обновить БД.