私はMVCを初めて使用し、マスター詳細形式でレコードを追加/編集しようとしています。masteridとdetailidはどちらも、レコードの挿入時にOracleによって生成されます。したがって、DBContext.SaveChanges()を呼び出そうとすると、外部キーに違反し、IDが「0」のプライマリ行が見つからないというエラーが発生します。
以下はクラスの説明です。
public class Master
{
public int MasterID { get; set; }
public string MasterTitle { get; set; }
public virtual IList<Detail> Details { get; set; }
}
public class Detail
{
public int DetailID { get; set; }
public int MasterID { get; set; }
public string DetailName { get; set; }
public virtual Master Master { get; set; }
}
コントローラコード
[HttpPost]
public ActionResult Create(MASTER masterrecord)
{
if (ModelState.IsValid)
{
db.MASTER.Add(masterrecord);
db.SaveChanges();
}
...
}
主キー(masterid)は、レコードがデータベースに挿入された後にのみ意味のある値を取得します。この時点でcontext.SaveChanges()は、「0」masteridを使用してクライアントレコードも保存しようとします。役に立つものが見つからなかったところをすべて検索しました。
最初にMasterテーブルのみを保存して、masteridを取得し、DETAILモデルで使用できるようにします。ただし、EF5 MVC ASP.NETを使用してそれを行う方法をどこにも見つけることができませんでした。作業サンプルを提供する正しい方向を誰かに教えてもらえますか?ありがとうSiddhant