【问题标题】:Update entity does not update Navigation Property - Entity Framework更新实体不更新导航属性 - 实体框架
【发布时间】:2013-01-13 09:26:06
【问题描述】:

我正在尝试使用 Entity Framework 更新关系,但没有成功。

我有一个名为 Houses 的实体,这些 House 在一条街上。

街道可以有很多房子。

我用它来更新房屋的价值

    [HttpPost]
    public ActionResult Edit(Houses house)
    {
        if (ModelState.IsValid)
        {
            house.Color = "Yellow";
            house.Street.Id = 2; //It does not update, why?

            db.HousesSet.Attach(house);

            db.ObjectStateManager.ChangeObjectState(house, EntityState.Modified);

            db.SaveChanges();

            return RedirectToAction("Index");
        }
        return View(house);
    }

并且房屋值被编辑,除了导航属性,我没有成功改变与街道的关系,我想改变房屋街道。

我该怎么做?

【问题讨论】:

    标签: asp.net-mvc entity-framework entity-framework-4


    【解决方案1】:

    尝试从街道对象中添加它。

    [HttpPost]
    public ActionResult Edit(Houses house)
    {
        if(ModelState.IsValid)
        {
            var street = db.Street.Include("Houses").Where(c => c.Id == house.Street.Id).FirstOrDefault;
            street.Houses.Add(new House{ houseSfuffGoesHere});
            db.SaveChanges();
        }
        //whatever else you wanted to do
    }
    

    【讨论】:

      【解决方案2】:

      Id属性是否设置为映射中的数据库生成?

      如果你已经用属性 DatabaseGeneratedOption.Identity 标记了属性,它将不会被保存。

      或者,如果您尝试更改实际街道对象,则应加载所需的街道对象并将该属性分配为填充:

      public ActionResult Edit(Houses house)
      {
          if (ModelState.IsValid)
          {
      
              var street = db.StreetsSet.First(2);
              house.Color = "Yellow";
      
              house.Street = street;
      
              db.HousesSet.Attach(house);
      
              db.ObjectStateManager.ChangeObjectState(house, EntityState.Modified);
      
              db.SaveChanges();
      
              return RedirectToAction("Index");
          }
          return View(apartamentos);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-19
        • 1970-01-01
        相关资源
        最近更新 更多