Tôi hiện đang sử dụng EF4.3 và Mã đầu tiên. Việc tạo các đối tượng của tôi hoạt động (thông qua quan điểm của tôi - chỉ sử dụng Create được tạo tự động), nhưng khi tôi cố gắng chỉnh sửa một đối tượng, nó không lưu bất kỳ thay đổi nào, hoàn toàn, buộc trở lại các thuộc tính điều hướng của tôi. Tôi đã được reading on relationships, nhưng tôi không hiểu làm thế nào để nói với bối cảnh của tôi rằng mối quan hệ đã thay đổi.Không thể liên hệ cập nhật cho thuộc tính điều hướng trong khung tổ chức
Dưới đây là một số mã ví dụ về việc triển khai của tôi.
@* 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>
Đây là thực hiện của tôi Controller (POST của Chỉnh sửa của tôi):
[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);
}
Trong đối tượng dự án của tôi:
public class Project
{
public int ProjectID { get; set; }
[Required]
public string Name { get; set; }
// Navigation Properties
public virtual User Manager { get; set; }
}
Dưới đây là phương pháp tương ứng từ kho (nơi bối cảnh của tôi cư trú):
public void InsertOrUpdateProject(Project project)
{
if (program.ProjectID == default(int))
{
context.Projects.Add(project);
}
else
{
context.Entry(project).State = EntityState.Modified;
}
}
Chỉ cần được rõ ràng, điều này không làm việc để cập nhật tài sản của tôi, nhưng nó không cập nhật thuộc tính chuyển hướng của tôi (trong trường hợp này, Manager). Đánh giá cao bất kỳ trợ giúp nào.
Tuyệt vời. Cảm ơn bạn. Ban đầu tôi đã thực hiện các tuyến đường chính nước ngoài, nhưng đã có một số vấn đề với nó. Hóa ra, nó hoạt động, nhưng tôi phải định nghĩa thuộc tính [ForeignKey ("Name")] với thuộc tính navigation cho mọi thứ để ánh xạ đúng cách. Chấp nhận câu trả lời của bạn. Cảm ơn! – glockman
@ user1240560: Với tên trong câu trả lời của tôi, nó thực sự nên hoạt động mà không có thuộc tính ForeignKey (phát hiện FK theo quy ước tên). Nhưng nếu tên của bạn hơi khác một chút và không tuân thủ các quy tắc quy ước, thì có, bạn cần chú thích. – Slauma
@ Slauma Tôi yêu bạn, các cách tiếp cận khác nên làm việc với Code First Model, nhưng với một DataBase đầu tiên chỉ có một mà làm việc cho tôi là hack của bạn, tôi đã rối tung với nó trong nhiều ngày, và bây giờ tôi phải nói rằng tôi yêu bạn rất nhiều –