나는 이곳 저곳을 수색 해왔고 많은 질문을 발견했지만 그들 중 누구도 대답하지 못했습니다.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 열로 표시 한 필드의 값을 명시 적으로 설정하려고 시도하고 있음을 나타냅니다. Scaffolded가 틀린 것이 아니라면,'ParentID'는'Child'의'Identity' 컬럼이되어서는 안됩니다. –
@ stephen.vakil 응답 해 주셔서 감사합니다. 내일 일하게 될 것이고 나는 그것을 게시 할 수있을 것입니다. 내가 보여준 것과는 다른 것을 바꾸지 마라. 이 줄에서 "_context.SaveChangesAsync(); await"예외가 발생합니다. – Bielik
양식 안의보기에 숨겨진 것으로 parentID를 저장하면 게시물과 함께 반환됩니다 – Monah