Исключение при применении изменений к модели EF через ApplyPropertyChanges в MVC - PullRequest
0 голосов
/ 27 апреля 2011

Я пытаюсь сохранить отредактированную сущность Entity Framework ApplyPropertyChanges и получаю исключение:

"ObjectStateManager не содержат ObjectStateEntry с ссылка на объект типа 'MvcApplication1.Models.Product'. "} System.Exception {System.InvalidOperationException}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product productToEdit) //all properties of Product are valid
 {
                try
                {
productsDBEntities.ApplyPropertyChanges("ProductSet", productToEdit); //exception here
                    entities.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }

Любая идея будет очень признательна!

Спасибо!

1 Ответ

1 голос
/ 27 апреля 2011

Сначала вы должны загрузить Product из базы данных, если хотите использовать ApplyPropertyChanges:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product productToEdit) 
{
    try
    {
        entities.Products.Single(p => p.Id == productToEdit.Id);
        entities.ApplyPropertyChanges("ProductSet", productToEdit);
        entities.SaveChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Или вы можете использовать другой подход:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Product productToEdit) 
{
    try
    {
        entities.AttachTo("ProductSet", productToEdit);
        entities.ObjectStateManager.GetObjectStateEntry(productToEdit).SetModified();
        entities.SaveChanges();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Кстати.вы используете .NET 3.5?ApplyPropertyChanges устарел в .NET 4.0.

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