以下は私のクラスです
public class Item
{
public int ItemID { get; set; }
[Required(ErrorMessage = "Unit of measure1 is required.")]
public int Uom1Id { get; set; }
public UnitOfMeasure Uom1 { get; set; }
[Required(ErrorMessage = "Unit of measure2 is required.")]
public int Uom2Id { get; set; }
public UnitOfMeasure Uom2{ get; set; }
}
public class UnitOfMeasure
{
public int UnitOfMeasureID { get; set; }
public string MeasureName { get; set; }
}
以下の私のイニシャライザ:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Item>().HasRequired(x => x.StockUnitOfMeasure)
.WithMany()
.HasForeignKey(x => x.StockUnitOfMeasureId).WillCascadeOnDelete(false);
modelBuilder.Entity<Item>().HasRequired(x => x.PurchaseUnitOfMeasure)
.WithMany()
.HasForeignKey(x => x.PurchaseUnitOfMeasureId).WillCascadeOnDelete(false);
}
コードを作成します。
<div class="editor-label">
@Html.LabelFor(model => model.Uom1Id, "Stock Unit Of Measure")
</div>
<div class="editor-field">
@Html.DropDownList("Uom1Id", String.Empty)
@Html.ValidationMessageFor(model => model.Uom1Id )
</div>
私は EF を初めて使用します。属性 [Required] がフィールド Uom1Id および Uom2Id で機能しない理由はわかりませんが、他のクラスの他のフィールドでは機能します。
キー 'Uom1Id' を持つ ViewData アイテムはタイプ 'System.Int32' ですが、タイプ 'IEnumerable' である必要があります。
ありがとう