EF插入不遵循db自动增量(DB First)

时间:2013-08-13 01:18:31

标签: sql-server-2008 asp.net-mvc-4 visual-studio-2012

的.edmx

<Property Name="uid" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />

EF设置了StoreGeneratedPattern =&#34; Identity&#34;,但为什么我仍然无法保存到db?调试显示该值始终为0,猜测是非常正确的,因为服务器在插入之前没有将值返回到Web,但模型验证总是错误,我已经通过 C#, entity framework, auto incrementAutonumber with Entity Framework 但没有运气,我做错了什么?有什么想法吗?

更新1:

添加了模型和元数据图片,忘了提到我使用 EF DB优先来生成类

ASP.NET MVC视图

<div class="editor-field">
    @Html.HiddenFor(model => model.uid)
</div>

ASP.NET MVC控制器

[HttpPost, ValidateJsonAntiForgeryToken]
        public JsonResult Create(BasicUserInfo basicuserinfo)
        {
            if (ModelState.IsValid)
            {
                db.BasicUserInfoes.Add(basicuserinfo);
                db.SaveChanges();
            }
            else 
            {
                return Json(new { valid = "N", err = CaptureError() });
            }

            return Json(new { valid = "Y", route = Url.Action("Index") });
        }

脚本

            var self = this;
            var data = "";
            var _model = new model();
            var data = JSON.stringify({ "BasicUserInfo": $(e.currentTarget).serializeObject() });
                var _Create = new Create();
                _Create.fetch({
                    type: 'POST',
                    headers: headers,
                    data: data,
                    contentType: "application/json; charset=UTF-8",
                    success: function (data, textStatus, jqXHR) {
                        if (textStatus.valid == "Y") {
                            _model.AppendAddSuccess(textStatus.route);
                        } else {
                            _model.AppendFailed(textStatus.err);
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        console.log(textStatus.statusText);
                    }
                });

SQL Server 2008 enter image description here

错误

enter image description here

模态
enter image description here

元数据

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来Entity Framework没有将该属性识别为表字段。创建实体时,如果将其设置为IsIdentity = true,则也不需要为其主键指定html帮助器。如果EF识别该实体,它将自动为该字段生成主键。因此,您只需要其他字段的html助手。

确保您的model属性与数据库列的名称相同。在这种情况下,您的db列应该标题为uid。如果您不想更改数据库表,可以使用Column属性在模型中指定目标列。