ASP.NET MVC。 Code First父导航属性未自动填充

时间:2016-08-23 23:17:17

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

鉴于这些POCO课程

class MainClass{

    [Key] int id {get;set;}

    public string name {get;set;}

    [Required] 
    public virtual ICollection<SubItem> subItems {get;set} // unique sub items

}

Class SubItem{

    [Key] int id {get; set;}

    public string name {get;set;}

    [Required] // required is nedded. the subitem cannot exist by it's self
    public MainClass parent {get; set;}
}

发布并绑定到控制器时,它全部设置,并将所有SubItems状态设置为:

public virtual ActionResult Edit([Bind()] MainClass entity) {
    foreach(var subItem in entity.subItems)
        db.Entry(subItem).State = System.Data.Entity.EntityState.Modified;

    if (ModelState.IsValid) { // Fails here
        db.Entry(entity).State = System.Data.Entity.EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Edit", new { edited = "true" });
    }

}

然而,modelState包含&#34; parent不能为null&#34;每个项目的错误。 和验证失败。由于某种原因,父母&#34;属性不会自动填充。我怎么能避免它?

我正在渲染这样的视图。

@model MainClass
@Html.HiddenFor(m=>m.id)
@Html.EditorFor(m=>m.name)
@Html.EditorFor(m=>m.subItems)

SubItem有EditorTemplate

的情况
@model SubItem
@Html.HiddenFor(m=>m.id)
@Html.EditorFor(m=>m.name)
由于级联删除,需要

[Required] parent

没有[Required]一切正常。并且在保存db时添加父属性。但是,迁移时会关闭级联删除。

0 个答案:

没有答案