У меня есть таблица, сопоставленная в Entity Framework 4, которая является дочерней таблицей для нескольких других таблиц. Каждый раз, когда я пытаюсь удалить строку в этой таблице, я получаю сообщение ниже. Эта таблица имеет несколько внешних ключей для других таблиц, но она всегда является дочерней таблицей в отношениях, а не основной. Это сообщение появляется, как только я вызываю context.DeleteObject (object), для него не нужен context.SaveChanges (). Я проверил, что все отношения правильно определены в конструкторе .edmx.
Сообщение:
Операция не выполнена: отношение не может быть изменено, так как одно или несколько свойств внешнего ключа не могут иметь значение NULL. Когда в отношение вносится изменение, для соответствующего свойства внешнего ключа устанавливается нулевое значение. Если внешний ключ не поддерживает нулевые значения, необходимо определить новое отношение, свойству внешнего ключа должно быть назначено другое ненулевое значение или несвязанный объект должен быть удален.
Таблица
Project (1) - (many) ProjectMember (many) - (1) Employee
ProjectID (PK) ProjectMemberID (PK) EmployeeID (PK)
ProjectName (varchar) ProjectID (FK) FirstName (varchar)
EmployeeID (FK) LastName (varchar)
Role (varchar)
Для каждого проекта у меня есть несколько членов ProjectMembers из списка сотрудников компании. Удаление ProjectMember не должно влиять ни на таблицу Project, ни на сотрудников.
Я не хочу, чтобы FK обнулялись, потому что отношение должно существовать.
Удаление происходит из сетки данных WPF 4, когда удаляется удаляемая строка. Я перехватываю клавишу удаления и вызываю context.DeleteObject ().
CommandManager.AddPreviewExecutedHandler(grid, new ExecutedRoutedEventHandler(gridDeleteCommandHandler));
private void gridDeleteCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
if (e.Command == DataGrid.DeleteCommand)
{
if (grid.SelectedItem is ProjectMember)
{
ProjectMember pm = (ProjectMember)grid.SelectedItem;
_context.DeleteObject(pm);
SaveChanges();
}
}
e.Handled = true;
}
Любые идеи о том, почему происходит ошибка и как заставить удаление работать? У меня нет проблем с удалением из основной таблицы, если в дочернем элементе нет зависимых строк