none
Изменение модели в ASP.NET MVC используя Entity Framework RRS feed

  • Вопрос

  • Добрый день! Не могу обновить данные модели. Экшн редактирования (HttpPost) кидает исключение:

    "Инструкции по обновлению, вставке или удалению из хранилища затронули непредвиденное число строк (0). Сущности могли быть изменены или удалены с момента их загрузки. Обновите записи диспетчера ObjectStateManager."

    Код экшна

               

    [HttpPost, ValidateAntiForgeryToken]
            public ActionResult Edit(Campaign campaign)
            {
                try
                {
                    if (ModelState.IsValid)
                    {
                        db.Campaign.Attach(campaign);
                        db.Entry(campaign).State = EntityState.Modified;
                        db.SaveChanges();
                        return RedirectToAction("Company", new { id = campaign.CompanyId });
                    }
                }
                catch (Exception e)
                {

                }
                return View(campaign);

            }

    Код модели

    public class Campaign
        {
            public Guid CampaignId { get; set; }
            
            [Required]
            public string Name { get; set; }
            public byte[] RowVersion { get; set; }
            
            [Required]
            //[DataType(DataType.Date)]
            public DateTime StartDate { get; set; }

            [Required]
            //[DataType(DataType.Date)]
            public DateTime EndDate { get; set; }

            public virtual Company Company { get; set; }
            public virtual Guid CompanyId { get; set; }
            public virtual List<Stage> Stages { get; set; }

            public Campaign()
            {
             //   this.CampaignId = Guid.NewGuid();
                this.StartDate = DateTime.Now;
                this.EndDate = DateTime.Now;
            }

            public Campaign(Guid compId)
            {
               // this.CampaignId = Guid.NewGuid();
                this.StartDate = DateTime.Now;
                this.EndDate = DateTime.Now;
                this.CompanyId = compId;
            }
        }

    11 сентября 2013 г. 6:58

Ответы

  • Судя по тому, что вы привели вы присоединяете новый объект к контексту, а идентификатор у него GUID. Случайно он у вас не генерируется заново, и поэтому старая запись просто не находится и не обновляется по Ид.

    Сделаем содержимое сообщества лучше, вместе!

    11 сентября 2013 г. 8:04
    Модератор