2011-12-26 12 views
5

Mam dwie tabele Employee (n) i Store (1), które mają związek n: 1.Entity Framework instrukcja delete koliduje z ograniczeniem referencyjnym

Employee ma klucz obcy idStore, który jest kluczem podstawowym z Store.

Oto jak próbuję usunąć wiersz z 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; 
    } 
} 

I wciąż otrzymuję błąd, który delete oświadczenia sprzeczne z ograniczeniem referencyjnym.

Kompletny błąd jest tutaj:

DELETE sprzeczne z przymusu REFERENCE "FK_Bill_Employee". Konflikt wystąpił w bazie danych "myDatabase", tabela "dbo.Bill", kolumna "idEmployeeMember".
Oświadczenie zostało wypowiedziane.

Odpowiedz

1

Nie możesz znaleźć i usunąć pracownika?

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(); 
     } 
    } 
} 

Nie sądzę, trzeba zrobić coś więcej niż to, naprawdę .....

Następnym razem podczas ładowania tego konkretnego sklepu pracownik należał, że pracownik nie będzie już w zbiorze pracowników sklepu - bez robienia bałaganiarskich kasowań ani niczego ...

+1

Nie, nie mogę. Mówi ten sam błąd. –

+0

Nic. Jest to prosta tabela, której klucz podstawowy nie ma wartości null. Jeśli jednak spróbuję usunąć pracownika z idStore = 1, to jeśli w tabeli Store znajduje się tylko jeden wiersz o idStore = 1, powinien on zostać usunięty. Myślę, że właśnie dlatego ten błąd się dzieje. –

+0

{"Instrukcja DELETE kolidowała z ograniczeniem REFERENCE \" FK_Bill_Employee \ ". Konflikt wystąpił w bazie danych \" myDatabase \ ", tabela \" dbo.Bill \ ", kolumna 'idEmployeeMember'. \ R \ nZostanie to zostało zakończone. "} –