繁体   English   中英

实体框架-保存数据库更改不起作用

[英]Entity Framework - saving db changes not working

提交表单并传递模型(表单)时,我试图将更改保存到数据库中。

表单模型具有一个PeopleInvolved对象作为属性。

该模型已成功更新,更改也已成功添加到peopleInvolved对象,但是, SaveChanges()调用不会保存任何内容。

.NET Framework 4.5.1-EF 6.1.1

public class Forms
{
        public int Id { get; set; }
        public string UserId { get; set; }
        public PeopleInvolved PeopleInvolved { get; set; }     
}

public async Task<ActionResult> EditForm(Forms model, string returnUrl)
{
    ViewData["ReturnUrl"] = returnUrl;
    ApplicationUser user = await GetCurrentUserAsync();

    if (!ModelState.IsValid) 
        return RedirectToAction("Index", model);

    if (model.PeopleInvolved != null)
    {
        PeopleInvolved peopleInvolved = _db.PeopleInvolved.Single(x => x.FormId == user.FormId);
        peopleInvolved = model.PeopleInvolved;

        _db.SaveChanges();

        return RedirectToLocal(returnUrl + "?PeopleInvolved?Success");
    }
}

您实际上并没有更改数据库中的任何内容。

您对数据库的调用返回了PeopleInvolved对象,并将对它的引用存储在peopleInvolved变量中。 然后,您将该变量更改为对模型对象上PeopleInvolved属性的引用。 您实际上从未更改过从数据库调用返回的对象。

简单的解决方案是做类似的事情

peopleInvolved.Property1 = model.PeopleInvolved.Property1;
peopleInvolved.Property2 = model.PeopleInvolved.Property2;

更新从数据库返回的实际对象。

您可以像这样更新。 如果必须使用user.FormId覆盖model.PeopleInvolved.FormId,请更新该属性。

db.PeopleInvolved.Attach(model.PeopleInvolved);
db.Entry(model.PeopleInvolved)).State =  System.Data.Entity.EntityState.Modified;    
db.SaveChanges();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM