2

Entity Framework を使用して関係を更新しようとしていますが、成功しません。

Houses というエンティティがあり、これらの家は通りにあります。

通りには多くの家屋があります。

これを使用して家の値を更新します

    [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);
    }

家の値は、Navigation プロパティを除いて編集されます。通りとの関係を変更できませんでした。家の通りを変更したいと思います。

どうやってやるの?

4

2 に答える 2

0

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);
}
于 2013-01-13T01:23:08.800 に答える
0

ストリート オブジェクトから追加してみてください。

[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
}
于 2013-01-13T01:20:56.680 に答える