asp.net mvc 6等待SaveChangesAsync()不起作用

时间:2016-04-18 06:59:08

标签: asp.net-mvc entity-framework

我有一个会员模型:

public class Member
{
    public int ID { get; set; }

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    [Display(Name = "Password")]
    public string Pass { get; set; }
}

使用此dbcontext类:

   public class App1Context: DbContext
    {

        public DbSet<Member> Members { get; set; }
    }
迁移和创建数据库之后

我使用控制器(Register)将我的新成员数据保存到数据库:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register([Bind("ID", "FirstName", "LastName", "Pass")] Member member)
    {
        try
        {
            if (ModelState.IsValid)
            {
                App1context.Members.Add(member);
                await App1context.SaveChangesAsync();
                return RedirectToAction("showMember");
            }
        }
        catch (DbUpdateException)
        {
            ModelState.AddModelError(string.Empty, "Unable to save changes.");
        }
        return View(member);
    }

当系统要执行[await App1context.SaveChangesAsync();]时,无法保存并catch (DbUpdateException)代替运行。

为什么不能保存?

1 个答案:

答案 0 :(得分:0)

如果没有其他定义,您的会员ID将被指定为您的表的主键;实体框架还将其指定为自动增量(标识)。

如果您尝试在启用了标识的对象中插入自己的ID,并将它们保存到数据库中;你会得到一个INSERT例外。

如果是这种情况,请从BIND []参数中删除ID,EF将自行完成。