为什么这个EF属性会返回另一个属性的值?

时间:2013-09-25 15:12:51

标签: asp.net-mvc entity-framework

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

Object definition

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

然后我尝试将ID添加到A的编辑页面作为可编辑字段。使用@Html.EditorFor()@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>

结果:

Result

稍微玩了一下后,我决定只更改ID属性的名称。编辑字段立即开始显示正确的GUID值。

导致此行为的原因是什么? ID是实体框架中主键的保留属性名称,还是与某些MVC命名约定冲突(格式为{{ 1}})?

1 个答案:

答案 0 :(得分:2)

默认实体将假设ID是您的PK。您可以更改此w / Fluent API。这就是改变名称的原因。

以下是一篇关于使用流畅的http://msdn.microsoft.com/en-us/data/jj591617.aspx

配置映射的精彩文章
  • 移动评论作为帖子的利益的答案。 -