Удаление сущностей из таблицы базы данных через свойство навигации с использованием RIA Services и Entity Framework - PullRequest
1 голос
/ 31 мая 2011

У меня есть 3 нормализованных таблицы, состоящие из сотрудников, отделов и сотрудников.Я хочу иметь возможность назначить сотрудника одному или нескольким отделам, следовательно, таблицу ссылок (EmployeesToDepartments).Я могу успешно запросить базу данных и извлечь полную иерархию сущностей через свойства навигации, используя

this.ObjectContext.Employees.Include("EmployeesToDepartments").Include("EmployeesToDepartments.Department")

плюс атрибут [Включить] в метаданных, что позволяет мне получить доступ к отделам для данного сотрудника.При попытке удалить ссылку между [Employee] и [Department] в таблице [EmployeesToDepartments] мне выдается ошибка ограничения внешнего ключа.

Я упростил мою модель, включив в нее только одно свойство навигации между [Employees] и [EmployeesToDepartments].Ограничение внешнего ключа между [Employees]. [ID] и [EmployeesToDepartments]. [IDEmployee] не позволяло мне обновить таблицу EmployeesToDepartments.С этим удаленным через настройку Отношений теперь я могу обновить таблицу.Теперь я могу без ошибок выполнить следующий код

foreach (var rel in _employee.EmployeesToDepartments)
{
    _employee.EmployeesToDepartments.Remove(rel);
}

_domainContext.SubmitChanges();

.

Я ожидал увидеть записи в RelEmployeesToDepartments с IDEmployee, которые будут удалены.То, что я вижу в таблице, это значение 0, где ранее был IDEmployee.

Можно ли принудительно выполнить оператор DELETE?Я неправильно понимаю основные понятия здесь?

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 01 июня 2011

Удаление сущностей в свойстве навигации только разрывает связь между сущностями. Вы должны удалить из EntitySet, чтобы получить то, что вы хотите.
ех) myDomainContext.EmployeeDepartments.Remove (employeeDepartmentToRemove); myDomainContext.SubmitChanges ();

...