powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Многие-ко-многим в Entity Framework в ASP.NET MVC (ADO.NET entity data model)
2 сообщений из 2, страница 1 из 1
Многие-ко-многим в Entity Framework в ASP.NET MVC (ADO.NET entity data model)
    #37976990
CtrlAltDelete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, у меня такой вопрос (по связям многие ко многим), не буду углубляться во View это не принципиально, начну с контроллера, есть следующий конроллер для создания объектов:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
            
        [HttpPost]
        public ActionResult Create(Employee employee)
        {
            List<int> SelectedIDs = Helper.GetIDList(Request, "EmployeeDuties");
            List<Duty> SelectedDuties = new List<Duty>();
            SelectedIDs.ForEach(id => SelectedDuties.Add(db.Duties.Single(x => x.Id == id)));
            
            if (ModelState.IsValid)
            {
                SelectedDuties.ForEach(duty => employee.Duties.Add(duty));
                
                db.Employees.AddObject(employee);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

            ViewBag.DepartamentId = new SelectList(db.Departaments, "Id", "Name", employee.DepartamentId);
            ViewBag.Duties = db.Duties.ToList();
            return View(employee);
        }



все в принципе довольно стандартно, все работает, а вот с контроллером изменения объекта проблемы:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        [HttpPost]
        public ActionResult Edit(Employee employee)
        {
            List<int> SelectedIDs = Helper.GetIDList(Request, "EmployeeDuties");
            List<Duty> SelectedDuties = new List<Duty>();
            SelectedIDs.ForEach(id => SelectedDuties.Add(db.Duties.Single(x => x.Id == id)));

            if (ModelState.IsValid)
            {
                //

                //
                db.Employees.Attach(employee);
                db.ObjectStateManager.ChangeObjectState(employee, EntityState.Modified);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.DepartamentId = new SelectList(db.Departaments, "Id", "Name", employee.DepartamentId);
            ViewBag.Duties = db.Duties.ToList();
            return View(employee);
        }



объясните как тут правильно "переопределить" объект Duties для employee? ничего не получается, а что то подобное:

Код: c#
1.
2.
                employee.Duties.Clear();
                SelectedDuties.ForEach(duty => employee.Duties.Add(duty));



выдает ошибку, уже ума не приложу как сохранить изменения в объекте со связями "многие-ко-многим"
...
Рейтинг: 0 / 0
Многие-ко-многим в Entity Framework в ASP.NET MVC (ADO.NET entity data model)
    #37977000
CtrlAltDelete
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос снимается все заработало, не там ставил изменение связей, нужно было сначала аттачить к контексту объект а потом менять связи, а не наоборот, пример ниже:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        [HttpPost]
        public ActionResult Edit(Employee employee)
        {
            List<int> SelectedIDs = Helper.GetIDList(Request, "EmployeeDuties");
            List<Duty> SelectedDuties = new List<Duty>();
            SelectedIDs.ForEach(id => SelectedDuties.Add(db.Duties.Single(x => x.Id == id)));

            if (ModelState.IsValid)
            {
                db.Employees.Attach(employee);
                //
                employee.Duties.Clear();
                SelectedDuties.ForEach(duty => employee.Duties.Add(duty));
                //
                db.ObjectStateManager.ChangeObjectState(employee, EntityState.Modified);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.DepartamentId = new SelectList(db.Departaments, "Id", "Name", employee.DepartamentId);
            ViewBag.Duties = db.Duties.ToList();
            return View(employee);
        }
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Многие-ко-многим в Entity Framework в ASP.NET MVC (ADO.NET entity data model)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]