EF错误地映射ID属性

时间:2012-11-23 12:20:43

标签: c# asp.net-mvc entity-framework

我有两个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; }
}

当我使用隐藏字段输入编辑视图中的属性时:

@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的属性是 NOT 主键(因为我假设EF假设这个)?

1 个答案:

答案 0 :(得分:0)

由于任何域模型都必须在EF中拥有ID,因此只需在您的客户类中创建另一个属性并使用[Key]

进行装饰
public class Customer : Party
{
    [Key]
    public int CustomID { get; set; }

    [Range(1, int.MaxValue)]
    public int ID { get; set; }
}