【发布时间】:2012-11-23 12:20:42
【问题描述】:
我有两个 EF 模型,其中一个派生自另一个。
public class Party
{
[Key]
public Guid Key { get; set; }
[Required, MaxLength(50)]
public string Name { get; set; }
}
public class Customer : Party
{
[Range(1, int.MaxValue)]
public int ID { get; set; }
}
当我使用这样的隐藏字段将属性放入 EDIT 视图时:
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.Key)
两个字段的值相同,但由于 ID 属性不能是 GUID,因此出现验证错误。
<input data-val="true" data-val-number="The field ID must be a number." data-val-range="Feltet ID må være mellom 1 og 2147483647." data-val-range-max="2147483647" data-val-range-min="1" data-val-required="Feltet ID er obligatorisk." id="ID" name="ID" type="hidden" value="3b9ba191-3a3c-47d9-8bb7-48cc552cc6ec" />
<input data-val="true" data-val-required="Feltet Key er obligatorisk." id="Key" name="Key" type="hidden" value="3b9ba191-3a3c-47d9-8bb7-48cc552cc6ec" />
我如何告诉 EF 名为 ID 的属性不是主键(因为我认为 EF 假设了这一点)?
【问题讨论】:
-
这是因为控制器的url吗?我的路线设置是 {controller}/{action}/{id} 并且我的编辑操作的 url 是:localhost:54907/Customer/Edit/…
-
如果我将 ID 属性重命名为 CustomerID 并应用 Column 属性来保留数据库结构,我可以确认该字段不再等于 Key 属性。然而,我的问题是,如何在不将其设置为 url 的 id 部分的情况下保留我的 ID 属性。
-
您能否展示您用于 DbContext 的代码以及您如何映射鉴别器?还有你使用的是哪个版本的 EntityFramework ...
标签: c# asp.net-mvc entity-framework