TryUpdateModel不更新模型

时间:2018-07-16 07:22:40

标签: asp.net-mvc entity-framework unit-of-work

我有一个ASP.NET MVC 5应用程序,该应用程序将实体框架与存储库和工作单元模式结合使用。现在,我想使用TryUpdateModel()方法仅更新实际上已更改的任何给定模型的属性。

下面的示例演示了我的方法,但是我发现数据库中的值从未更改。

模型 (Release.cs)

public class Release : BaseModel
{
    public int ID { get; set; }

    [Required(ErrorMessage = "Enter a name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Enter a description")]
    public string Description { get; set; }
}

控制器 (ReleasesController.cs)

// POST: Releases/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(Release release)
{
    if (!ModelState.IsValid)
        return await Edit(release.ID);

    TryUpdateModel(await _unit.Releases.GetAsync(release.ID));

    await _unit.SaveAsync();
    return RedirectToAction("Edit", "Releases", new { id = release.ID });
}

但是,当我专门更新每个属性而不是调用TryUpdateModel()时,所做的更改将保存到数据库中。

var currentRelease = await _unit.Releases.GetAsync(release.ID);
currentRelease.Name = release.Name;
currentRelease.Description = release.Description;

0 个答案:

没有答案