我有两个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 假设这一点)?
由于任何域模型都必须在 EF 中具有 ID,因此只需在客户类中创建另一个属性并使用 [Key] 对其进行修饰
public class Customer : Party
{
[Key]
public int CustomID { get; set; }
[Range(1, int.MaxValue)]
public int ID { get; set; }
}