У меня есть главная таблица под названием Проекты.Этот проект имеет внешние ключи с именем DeptId для идентификатора отдела, SiteId для идентификатора сайта.Когда отображается представление, я хочу показать название отдела из таблицы Department и имя сайта из таблицы Site, но когда данные сохраняются обратно в таблицу Project, я хочу сохранить их идентификаторы обратно вТаблица проекта как внешний ключ.Итак, я хочу отобразить имена из таблицы Department и из таблицы Site в представлении, но я хочу сохранить связанные с ними идентификаторы в таблице Project, когда данные в представлении будут сохранены обратно в базу данных.Как мне сделать это с EF?С одной таблицей легко работать, но я не совсем понимаю, как отобразить одно поле для отображения и сохранить другое поле (ID) в основной базе данных проекта.Спасибо
---- ОБНОВЛЕНИЕ ------
Я нашел пример того, что мне нужно сделать, но не могли бы вы рассказать, как заполняется этот выпадающий список?,Первый параметр в раскрывающемся списке соответствует ViewBag в контроллере?
- FROM VIEW -
@Html.DropDownList("DepartmentID", String.Empty)
@Html.ValidationMessageFor(model => model.DepartmentID)
- FROM CONTROLLER -
[HttpPost]
public ActionResult Create(Course course)
{
try
{
if (ModelState.IsValid)
{
unitOfWork.CourseRepository.Insert(course);
unitOfWork.Save();
return RedirectToAction("Index");
}
}
catch (DataException)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
PopulateDepartmentsDropDownList(course.DepartmentID);
return View(course);
private void PopulateDepartmentsDropDownList(object selectedDepartment = null)
{
var departmentsQuery = unitOfWork.DepartmentRepository.Get(
orderBy: q => q.OrderBy(d => d.Name));
ViewBag.DepartmentID = new SelectList(departmentsQuery, "DepartmentID", "Name", selectedDepartment);
}