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.
Nie, nie mogę. Mówi ten sam błąd. –
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. –
{"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. "} –