【问题标题】:Cannot insert explicit value for identity column in table 'UTILISATEUR' when IDENTITY_INSERT is set to OFF当 IDENTITY_INSERT 设置为 OFF 时,无法在表“UTILISATEUR”中插入标识列的显式值
【发布时间】:2014-06-09 02:40:56
【问题描述】:

我使用 Visual Studio 2013 和 Sql Server 2012。 我用this 为我的项目生成视图。 我有两张桌子:

  1. UTILISATEUR (ID_UTILISATEUR,CIN,NOM,PRENOM...,ID_ROLE):
    ID_UTILISATEUR 是主键,ID_ROLE 是外键。
  2. ROLE(ID_ROLE、NOM_ROLE、DESCRIPTION_ROLE):ID_ROLE 是主要的 键。

代码生成过程完成后,我有这个:

  • 控制器/UtilisateurController.cs 。
  • 一个新文件夹(Views/Utilisateur):Create.cshtml、Delete.cshtml、 Details.cshtml、Edit.cshtml 和 Index.cshtml。

我的问题是当我访问 Create.cshtml 页面时,重新输入字段并单击 Create 我收到错误:Cannot insert explicit value for identity column in table 'UTILISATEUR' when IDENTITY_INSERT is set to OFF.

它说明我无法将值插入标识列,因为它设置为 ON。 我不知道我应该在下面的代码中更改什么来解决它。


我在 UtilisateurController.cs 中的 Create 方法:

public ActionResult Create()
    {
        ViewBag.ID_ROLE = new SelectList(db.ROLE, "ID_ROLE", "NOM_ROLE");
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include="ID_UTILISATEUR,CIN_UTILISATEUR,MATRICULE_UTILISATEUR,NOM_UTILISATEUR,PRENOM_UTILISATEUR,PASSWORD_UTILISATEUR,MAIL_UTILISATEUR,TELEPHONE_UTILISATEUR,ID_ROLE")] UTILISATEUR utilisateur)
    {
        if (ModelState.IsValid)
        {
            db.UTILISATEUR.Add(utilisateur);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.ID_ROLE = new SelectList(db.ROLE, "ID_ROLE", "NOM_ROLE", utilisateur.ID_ROLE);
        return View(utilisateur);
    }    

错误行是:db.SaveChanges();


我的视图/Utilisateur/Create.cshtml 页面是:

....
 @Html.ValidationSummary(true)

    <div class="form-group">
        @Html.LabelFor(model => model.ID_UTILISATEUR, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.ID_UTILISATEUR)
            @Html.ValidationMessageFor(model => model.ID_UTILISATEUR)
        </div>
    </div>

    <div class="form-group">
        <label for="inputCIN" class="control-label col-xs-2">CIN</label><div class="col-md-10">
            @Html.EditorFor(model => model.CIN_UTILISATEUR)
            @Html.ValidationMessageFor(model => model.CIN_UTILISATEUR)
        </div>
    </div>.....
 <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="créer" class="btn btn-default" />
        </div>....

请帮忙!

【问题讨论】:

  • 删除身份列以包含 ID_UTILISATEUR 并再试一次
  • 我从代码中删除了 ID_UTILISATEUR,但它不起作用。我得到同样的错误。

标签: asp.net-mvc set identity savechanges identity-insert


【解决方案1】:

您收到此错误的可能原因是您可能更改/更改了 PKEY 列或数据。要修复,请转到您的“.edmx”文件并右键单击表“UTILISATEUR”并选择“从数据库更新模型”。这应该可以。

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2016-08-18
    • 2019-03-10
    • 2010-11-22
    • 2011-08-26
    • 2017-12-17
    • 1970-01-01
    相关资源
    最近更新 更多