none
使用EF Code First,MVC里Create时提示“当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'Teacher' 中的标识列插入显式值。” RRS feed

  • 问题

  • 如题,使用EF Code First,创建model,并使用MVC 5模板创建了应用,一切运行正常。

    但是我不想使用数据迁移功能,于是删除了数据库中的“__MigrationHistory”表,又测试自己手动增加新的model,手动添加数据库表,看看是否可以正常对应。

    经过了一系列问题的障碍并一一解决后,终于可以Index里显示数据(自己在数据库中输入的数据)了,编辑数据并保存也没问题。但当点Create新增一条数据后,保存时却提示了错误:

    “SqlException: 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'Teacher' 中的标识列插入显式值。”

    控制器里Create代码默认:

    [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create([Bind(Include = "ID,Name,Email")] Teacher teacher)
            {
                if (ModelState.IsValid)
                {
                    db.Teachers.Add(teacher);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
    
                return View(teacher);
            }

    试图修改Bind来解决,于是改成:

    [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Create([Bind(Include = "Name,Email")] Teacher teacher)//去掉了ID
            {
                if (ModelState.IsValid)
                {
                    db.Teachers.Add(teacher);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
    
                return View(teacher);
            }
    问题仍然存在,这是怎么回事呢?


    陈锦巍

    2019年3月24日 13:03

全部回复