현재 EF4.3 및 코드 우선을 사용하고 있습니다. 내 개체의 생성은 (내 견해를 통해 - 자동 생성 된 Create를 사용하여) 작동하지만, 개체를 편집하려고 시도하면 변경 사항이 저장되지 않으므로 내 탐색 속성에 다시 연결됩니다. 나는 reading on relationships 이었지만 관계가 변경되었다는 사실을 내 상황에 알리는 방법을 모르겠다.엔티티 프레임 워크의 탐색 속성 업데이트 관계를 가져올 수 없습니다.
다음은 구현 예입니다. 내 프로젝트 개체 내에서
[HttpPost]
public ActionResult Edit(ProjectViewModel projectViewModel)
{
if (ModelState.IsValid)
{
Project project = new Project();
project.ProjectID = projectViewModel.ProjectID;
project.Name = projectViewModel.Name;
project.ProjectManager = repository.GetUser(projectViewModel.ManagerID);
repository.InsertOrUpdateProject(project);
repository.Save();
return RedirectToAction("Index");
}
ViewBag.Manager = new SelectList(repository.GetUsers(), "UserID", "FullName", projectViewModel.ManagerID);
return View(projectViewModel);
}
: 여기
public class Project
{
public int ProjectID { get; set; }
[Required]
public string Name { get; set; }
// Navigation Properties
public virtual User Manager { get; set; }
}
저장소에서 해당 방법이다 (내 컨텍스트 여기
@* Snippet from my view where I link into my ViewModel. *@
<div class="row">
<div class="editor-label">
@Html.LabelFor(model => model.ManagerID)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.ManagerID, ViewBag.Manager as SelectList, String.Empty)
@Html.ValidationMessageFor(model => model.ManagerID)
</div>
</div>
내 컨트롤러 구현 (내 편집의 POST)입니다 상주) :
public void InsertOrUpdateProject(Project project)
{
if (program.ProjectID == default(int))
{
context.Projects.Add(project);
}
else
{
context.Entry(project).State = EntityState.Modified;
}
}
이 속성은 내 속성을 업데이트하는 작업을 수행하지만 내 탐색 속성 (이 경우 Manager)은 업데이트하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.
우수에 대한 업데이트를 확인하십시오. 고맙습니다. 나는 원래 외래 키 라우트를 수행했지만 그로 인해 몇 가지 문제가있었습니다. 밝혀졌지만, 제대로 작동하려면 네비게이션 속성으로 [ForeignKey ("Name")] 특성을 정의해야했습니다. 당신의 대답을 수락하십시오. 감사! – glockman
@ user1240560 : 내 대답에 이름이 실제로 ForeignKey 특성 (이름 규칙에 따라 FK 검색)없이 작동해야합니다. 그러나 귀하의 이름이 매우 다를 경우 국제 대회 규칙을 따르지 않으면 네, 주석이 필요합니다. – Slauma
@Slauma 당신을 사랑합니다. 다른 접근법은 코드 퍼스트 모델로 작동해야하지만, 데이터베이스를 사용하십시오. 나를 위해 일한 유일한 것은 당신의 해킹이었습니다. 나는 며칠 동안 그것을 망쳤습니다. 그리고 지금 나는 사랑한다고 말하고 있습니다. 너 너무 많아. –