2

我刚刚在我的 ASP.NET MVC 4 应用程序中遇到了一个奇怪的问题。我创建了一个包含对象的实体框架模型A

对象定义

属性PK是一个 int,ID而是一个 GUID。

然后我尝试将ID' As 的编辑页面添加为可编辑字段。使用@Html.EditorFor()or@Html.TextBoxFor()时,结果文本框中的值是PK属性的值,而不是ID。正确使用将@Html.DisplayFor()显示ID为 GUID。

代码:

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

<div>
    @Html.TextBoxFor(model => model.ID)
</div>
<div>
    @Html.DisplayFor(model => model.ID)
</div>

结果:

结果

在玩了一会儿之后,我决定简单地更改ID属性的名称。编辑字段立即开始显示正确的 GUID 值。

是什么导致了这种行为?ID实体框架中主键的保留属性名称,还是与某些 MVC 命名约定(以 的样式xxxController)冲突?

4

1 回答 1

2

默认情况下,实体将假定 ID 是您的 PK。您可以使用 Fluent API 更改此设置。这就是为什么更改名称有效的原因。

这是一篇关于使用 fluent 配置映射的好文章:http: //msdn.microsoft.com/en-us/data/jj591617.aspx

  • 为了帖子的利益,将评论作为答案移动。-
于 2013-09-25T18:19:24.610 回答