获取消息“存储更新,插入或删除语句会影响意外的行数(0)”?

时间:2012-06-27 16:05:23

标签: asp.net-mvc entity-framework razor primary-key

这是另一个大问题。

我有模特:

public class Lead
    {
        [System.ComponentModel.DataAnnotations.Column("le_codlead")]
        public int LeadID {get; set; }

        [System.ComponentModel.DataAnnotations.Column("le_descr1")]
        [Required(ErrorMessage="Inserire Nome del Lead")]
        [Display(Name="Nominativo Lead")]
        public string Name1 {get; set;}

        [System.ComponentModel.DataAnnotations.Column("le_descr2")]
        [Display(Name = "Nominativo secondario")]
        public string Name2 { get; set; }
        ...
        ...
        ...
    }

控制器(用于创建方法):

[HttpPost]
        public ActionResult Create(Lead lead)
        {
            if (ModelState.IsValid)
            {
                db.Leads.Add(lead);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }
            return View(lead);
        }

这是视图:

@model CRMArcadia.Models.Lead

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true, "ATTENZIONE! Compilare tutti i campi obbligatori")
    <fieldset>
        <legend>Lead</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name1)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name1)
            @Html.ValidationMessageFor(model => model.Name1)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name2)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name2)
            @Html.ValidationMessageFor(model => model.Name2)
        </div>
        ...
        ...
        ...
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset> }

但是,当我尝试插入一个新的Lead时,它会抛出异常,如帖子标题:实体框架:“存储更新,插入或删除语句影响了意外的行数(0)。”我在网上看到它是由ID键(在这种情况下为LeadID)不更新引起的:他们建议在ID键的视图中插入一个hiddenfor属性,所以我做了:

    @Html.HiddenFor(model => model.LeadID)

但是,在创建按钮的压力下,没有任何事情发生。

有人在这个问题上有解决方案(或解决方法;))吗?

感谢。

1 个答案:

答案 0 :(得分:1)

你有一些额外的层与EF沟通吗?你的实体背景是什么?

对于更新方案:

如果您对“创建/编辑”使用相同的操作,则只需将@Html.HiddenFor(model => model.LeadID) - 隐藏字段放在块@using (Html.BeginForm()) { .... </fieldset> }之间。

如果没有用,请查看这篇文章MSDN - Working with Objects