2

一方が他方から派生する 2 つの 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" />

ID と呼ばれるプロパティが主キーではないことを EF に伝えるにはどうすればよいですか (EF がこれを想定しているため)。

4

1 に答える 1

0

すべてのドメイン モデルは EF で ID を持つ必要があるため、顧客クラスに別のプロパティを作成し、[Key] で装飾するだけです。

public class Customer : Party
{
    [Key]
    public int CustomID { get; set; }

    [Range(1, int.MaxValue)]
    public int ID { get; set; }
}
于 2012-11-23T16:52:00.500 に答える