1

.EDMX

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

EF 设置了 StoreGeneratedPattern = "Identity",但为什么我仍然无法保存到数据库中?调试显示该值始终为 0,猜测是非常正确的,因为服务器在插入之前不会将值返回到网络,但模型验证总是 false,我已经通过 C#、实体框架、自动增量自动编号与实体框架 但没有运气,我做错了什么?任何的想法?

更新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 在此处输入图像描述

错误

在此处输入图像描述

模态
在此处输入图像描述

元数据

在此处输入图像描述

4

1 回答 1

1

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

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

于 2013-08-13T03:38:57.520 回答