私はその場所全体を検索していますが、多くの質問を見つけましたが、どちらも私に答えません。EF特定の親に子供を入れてください
public class Parent
{
public int ID { get; set; }
public List<Child> Children { get; set; }
}
public class Child
{
public int ID { get; set; }
public int ParentID { get; set; }
public Parent Parent { get; set; }
}
EFは、DBを作成するの世話をし、足場を経て、私は、コントローラとビューを取得:私がやろうとしています
事は単純で、我々はそのような何かを持っているとしましょう。すべてうまく動作し、私は親を作成することができます。ドロップダウンから選択したParentIDの子を作成することもできます。私たちはこれを得た
public IActionResult Create(int id)
{
if (id == 0)
{
return NotFound();
}
ViewData["ID"] = id; //that a ParentID
return View();
}
とビューに:私は本当に何をしたいのか
はそのようなパラメータとしてのParentIDドロップダウン削除し、合格である
<form asp-action="Create">
<div class="form-horizontal">
<h4>Child</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="ParentID" [email protected]["ID"] />
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
</form>
「私が得た、これをすることはできません提出IDENTITY_INSERTがOFFに設定されている場合、テーブル 'Children'のID列の明示的な値を挿入してください。今私はその場所を見渡し、さまざまな属性を試しましたが、まだこれを動作させることはできません。
私は何らかの助けに感謝します。
更新
コントローラからメソッドを作成します。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID,ParentID")] Child child)
{
if (ModelState.IsValid)
{
_context.Add(child);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(book);
}
をちょうど問題の詳細を表示します。ここでは、選択コントロールを表示するデフォルトの足場のバージョンを使用しています。
public IActionResult Create(int id)
{
if (id == 0)
{
return NotFound();
}
ViewData["ParentID"] = new SelectList(_context.Parents.Where(x => x.ID == 1), "ID", "ID"); //Works
ViewData["ParentID"] = new SelectList(_context.Parents.Where(x => x.ID == id), "ID", "ID"); // Doesn't work
return View();
}
実際の 'Child'オブジェクトを構成するコードを投稿できますか?このエラーは、EFがID列としてマークしたフィールドの値を明示的に設定しようとしていることを示しているようです。それが不正確に足場を張らない限り、 'ParentID'は' Child'の 'Identity'カラムであってはなりません –
@ stephen.vakilあなたの応答をありがとう、明日私は仕事になるでしょう、そして私はそれを投稿することができますが、私が示したものとは別のものを変えないでください。この行は "await _context.SaveChangesAsync();"で例外をスローします。 – Bielik
フォーム内のビューに隠しとしてparentIDを格納し、これによって投稿と返されます – Monah