Как редактировать объект в Entity Framework? - PullRequest
3 голосов
/ 16 февраля 2011

DataContext.ApplyCurrentValues ​​() требуется entitySetName, что это?

Я думаю, что код будет таким же:

    public void Edit(Products p)
    {
        DataContext.ApplyCurrentValues("Products", p);
        DataContext.SaveChanges();
    }

Это правильно?

Ответы [ 3 ]

3 голосов
/ 31 августа 2012

Это для .Net 4.0

Для этого примера предположим, что мы имеем дело с объектами Product.

using (DBEntities context = new DBEntities())
{
    //Must attach first and change the state to modified
    context.Products.Attach(product);

    //If you are using .Net 4.1 then you can use this line instead:
    //context.Entry(
    context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);

    context.SaveChanges();
}

Если вы используете .Net 4.1, вы можете использовать «context.Entry (...)» вместо «context.ObjectStateManager.ChangeObjectState (product, EntityState.Modified)», как показано здесь: Пример context.Entry ()

Это самый простой способ сделать это. Для этого не нужно сначала извлекать объект из БД, вы можете просто предоставить объект, с которым вы возились. Единственным недостатком является то, что это обновляет все поля, а не только одно поле.

0 голосов
/ 16 февраля 2011

Используете ли вы EF4 - делайте это вместо этого, тогда вам не нужно беспокоиться об имени набора сущностей:

DataContext.Product.ApplyCurrentValues(p);
0 голосов
/ 16 февраля 2011

см. Эту статью http://msdn.microsoft.com/en-us/library/bb738695.aspx и http://msdn.microsoft.com/en-us/library/bb386870.aspx образец об обновлении с EF.
И этот вопрос о ApplyCurrentValues: ApplyCurrentValues ​​в EF 4 , чтобы узнать, как работать с AppliCurrentValues.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...