これについての洞察をいただければ幸いです: 次のコード
        [HttpPost]
    public ActionResult Edit(BeamCollection beamcollection)
    {
        if (ModelState.IsValid)
        {
            beamcollection.BeamMaterial = db.Types.Find(Convert.ToInt32(Request.Form.Get("BeamMaterial_ID")));
            db.Entry(beamcollection).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Details", "Bridge");
        }
        return View(beamcollection);
    }
BeamCollection レコードを変更しようとすると、DropDownList から選択した値を取得する beamcollection.BeamMaterial を除いて、すべての変更が反映されて DB に保存されます。デバッグすると、選択した値が beamcollection.BeamMaterial に割り当てられていることがわかります!
ちなみに、このフィールドは次のように定義されています
public virtual AllTypes BeamMaterial { get; set; }
つまり、AllTypes との 1 対多の関係を反映していますが、これは単方向の関係です。
(私にとって)奇妙なことは、作成アクションに同じ手法が使用され、完全に機能することです。
    public ActionResult Create(BeamCollection beamcollection)
    {
        if (ModelState.IsValid)
        {
            beamcollection.BridgeInfo = db.Bridges.Find(bridgeID);
            beamcollection.BeamMaterial = db.Types.Find(Convert.ToInt32(Request.Form.Get("BeamMaterial_ID")));
            db.BeamCollections.Add(beamcollection);
            db.SaveChanges();
            return RedirectToAction("Details", "Bridge");
        }
        return View(beamcollection);
    }
なぜこれが起こっているのか、どうすればうまくいくのか、助けてください。