次の 2 つのモデルがあるとします。
public class Card
{
public int CardId { get; set; }
public Media Media { get; set; }
}
public class Media
{
public int MediaId { get; set; }
[Required]
public string FileName { get; set; }
}
そして、次のコントローラーメソッド:
[HttpPost]
public ActionResult Create(Card card)
{
db.Media.Attach(card.Media);
ModelState.Remove("Media.FileName");
if (ModelState.IsValid)
{
db.Cards.Add(card);
db.SaveChanges();
}
return JsonNetSerializedResult(card);
}
新しいカードを作成したいのですが、それを既存の Media オブジェクトに関連付けます。「Controller/Create」に POST し、既存のメディア レコードの ID を含む「Media.MediaId」パラメータを含めて、EF に関連付けを作成させます。
ただし、SaveChanges() が呼び出された後、Card インスタンスで更新される唯一のプロパティは CardId です。また、Media.FileName を取得し、そのプロパティを Card インスタンスに設定する必要があります。
更新されたカード データを返し、データをコミットする関連するメディア データも返すことを EF に伝える一般的な方法はありますか?