Ошибка при обновлении записи базы данных с Entity Framework на странице ASP.NET MVC - PullRequest
2 голосов
/ 12 марта 2010

У меня есть страница ASP.NET, которая обновляет сведения об зарегистрированном адресе пользователя для выбранной записи.

Ниже приведен метод обновления, который я вызываю с моего контроллера.

Когда я вызываю метод ApplyPropertyChanges, я получаю сообщение об ошибке. Кто-нибудь сталкивался с такой же ошибкой при обновлении записи с Entity Framework?

Ценю ваши ответы.

Сообщение об ошибке:

Существующий объект в ObjectContext находится в состоянии добавлено. Изменения могут применяться только в том случае, если существующий объект находится в неизмененном или измененном состоянии.

Мой Update метод:

[HttpPost]
public bool UpdateAddressDetail([Bind(Prefix = "RegUser")] AddressDetail regUserAddress, FormCollection formData)
{
    regUserAddress.AD_Id = 3;
    regUserAddress.LastUpdated = HttpContext.User.Identity.Name;
    regUserAddress.UpdatedOn = DateTime.Now;
    regUserAddress.AddressType = ((AddressDetail)Session["CurrentAddress"]).AddressType ?? "Primary";
    regUserAddress.Phone = ((AddressDetail)Session["CurrentAddress"]).Phone;
    regUserAddress.Country = ((AddressDetail)Session["CurrentAddress"]).AddressType ?? "USA";

    miEntity.ApplyPropertyChanges(regUserAddress.EntityKey.EntitySetName, regUserAddress);

    miEntity.SaveChanges();

    return true;
}

Ответы [ 4 ]

1 голос
/ 13 марта 2010

Что сказал Дейв

+

Вам необходимо присоединить () отключенную сущность к контексту вашего объекта:

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.attach.aspx

miEntity.Attach(regUserAddress);
miEntity.SaveChanges();
1 голос
/ 12 марта 2010

Ошибка в том, что объект отделен от контекста, и ApplyPropertyChanges считает, что объект добавлен, потому что он не прикреплен. Таким образом, вам нужно будет выполнить запрос из контекста данных или получить прикрепленную форму, а затем применить изменения.

НТН.

0 голосов
/ 16 ноября 2011

Просто добавьте следующий код перед miEntity.SaveChanges():

miEntity.Entry(regUserAddress).State = EntityState.Modified;
0 голосов
/ 16 апреля 2010

Сначала выберите запись (объектный объект), ищите по ключу через ObjectContext. Например, если поиск ArticleSet EntitySet вызвал для записи, и как только вы получите его, измените его свойства с новыми значениями, а затем вызовите SaveChanges() из ObjectContext.

Пример:

ObjectQuery<Article> myArt=Context.ArticleSet.Where myArt = (row => row.ArticleId == value);
myArt.Description=" new value ";
etc. ..
etc ...

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