Entity Framework оператор удаления конфликтует с ограничением ссылки - PullRequest
5 голосов
/ 26 декабря 2011

У меня есть две таблицы Employee (n) и Store (1), которые имеют отношение n: 1.

Employee имеет внешний ключ idStore, который является первичным ключом от Store.

Вот как я пытаюсь удалить строку из Employee:

public void deleteEmployee(int idEmployee)
{
   MyEntities pe = new MyEntities();
   try
   {
      var firstQuery = from e in pe.Employees
                       where e.idEmployee == idEmployee
                       select e;
      string findIdStore = firstQuery.First().StoreReference.EntityKey.EntityKeyValues[0].Value.ToString();
      int idStore = Int32.Parse(findIdStore);
      Store r = pe.Stores.First(c => c.idStore == idStore);
      r.Employees.Remove(firstQuery.First());
      pe.DeleteObject(firstQuery.First());
      pe.SaveChanges();
   }
   catch (Exception ex)
   {
      return;
   }
}

И все же я получаю ошибку, что оператор удаления конфликтует с ограничением ссылки.

Полная ошибка здесь:

Оператор DELETE конфликтует с ограничением REFERENCE "FK_Bill_Employee".Конфликт произошел в базе данных «myDatabase», таблице «dbo.Bill», столбце «idEmployeeMember».
Оператор был прерван.

1 Ответ

1 голос
/ 26 декабря 2011

Разве вы не можете просто найти и удалить сотрудника ??

public void deleteEmployee(int idEmployee)
{
   using(MyEntities pe = new MyEntities())
   {
      var emmployeeToDelete = pe.Employees.FirstOrDefault(e => e.idEmployee == idEmployee);

      if(employeeToDelete != null)
      {
          pe.DeleteObject(employeeToDelete);
          pe.SaveChanges();
      }
   }
}

Не думаю, что вам нужно что-то большее, чем это, правда .....

В следующий раз, когда вы загрузите этот конкретный магазин, к которому принадлежал сотрудник, этот сотрудник больше не будет в коллекции сотрудников магазина - без каких-либо грязных ручных удалений или чего-либо еще ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...