Я, кажется, собираюсь сходить с ума, чтобы мой хвост не получал простую запись для обновления в проекте структуры сущности MVC 3. Что мне не хватает?Обновление записи с использованием Entity Framework 5 ошибок с DbUpdateConcurrencyException
Я могу создавать записи в порядке, но, похоже, не может выработать логику для выполнения обновления. Я пробовал различные методы, прикрепляя, не прикрепляя, и думаю, что я пропустил шаблон, когда задействованы внешние ключи или что-то в этом роде.
Объект, возвращенный видом, полностью заполнен и модель действительна. Заполнены поля идентификатора внешнего ключа.
Любые идеи, пожалуйста.
РоКо
public class EFormApplication
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ApplicationId { get; set; }
[ForeignKey("ApplicationTemplateId")]
public virtual ApplicationTemplate ApplicationTemplate { get; set; }
public int ApplicationTemplateId { get; set; }
[Required(ErrorMessage = "Each application must have a Title")]
public string Title { get; set; }
[Required(ErrorMessage = "Each application must have a Description. This is visible to the clients")]
public string Description { get; set; }
[ForeignKey("SecurityId")]
public virtual Security Security { get; set; }
public int SecurityId { get; set; }
public bool Published { get; set; }
[Display(Name = "EIDV Required")]
public bool EIDVRequired { get; set; }
[Display(Name = "Investor confirmation required")]
public bool InvestorConfirmationRequired { get; set; }
[Display(Name = "Advisor confirmation required")]
public bool AdvisorConfirmationRequired { get; set; }
[Display(Name = "Payment required")]
public bool PaymentRequired { get; set; }
[Display(Name = "Login Required")]
public bool UserLoginRequired { get; set; }
[Display(Name = "ISA Trans allowed")]
public bool IsaTransfersAllowed { get; set; }
public DateTime? Deadline { get; set; }
[Display(Name = "Fully Subscribed")]
public bool FullySubscribed { get; set; }
[Display(Name = "Image Url")]
[RegularExpression(@"^(ht)tp(s?):\/\/[0-9a-zA-Z].+$", ErrorMessage = "You must enter a valid URI including the http:// or https://")]
public string ImageUrl { get; set; }
[Display(Name = "Information Url")]
[RegularExpression(@"^(ht)tp(s?):\/\/[0-9a-zA-Z].+$", ErrorMessage = "You must enter a valid URI including the http:// or https://")]
public string InformationUrl { get; set; }
public bool Discontinued { get; set; }
public DateTime Created { get; set; }
public string CreatedBy { get; set; }
public DateTime LastUpdated { get; set; }
public string LastUpdatedBy { get; set; }
//navigation
public virtual ICollection<ApplicationSubmission> ApplicationSubmissions { get; set; }
}
Методы редактирования контроллера являются
[Authorize(Roles = "Admins")]
public ActionResult Edit(int applicationId)
{
EFormApplication eformapplication = _formRepository.GetEFormApplication(applicationId);
return View(eformapplication);
}
[Authorize(Roles = "Admins")]
[HttpPost]
public ActionResult Edit(EFormApplication eformapplication)
{
if (ModelState.IsValid)
{
eformapplication.LastUpdated = DateTime.UtcNow;
eformapplication.LastUpdatedBy = User.Identity.Name;
var opstatus = _formRepository.UpdateEFormApplication(eformapplication);
if (opstatus.Status)
{
return RedirectToAction("Design", "eForm");
}
else
{
return RedirectToAction("OpStatusError", "Error", opstatus);
}
}
return View(eformapplication);
}
И метод вместилище UpdateEFormApplication который является бит, сохранить запись выглядит следующим образом:
public OperationStatus UpdateEFormApplication(EFormApplication eFormApplication)
{
DataContext.Entry(eFormApplication).State = EntityState.Modified;
DataContext.SaveChanges();
return Save(eFormApplication);
}
Благодарим вас за то, что нашли время, чтобы опубликовать ответ после того, как вы его нашли. Я изменил таблицы и не обновил свой редактор EditorTemplate, и это привело меня к правильному пути. –