Ich habe zwei Tabellen Mitarbeiter und Abschluss. Zwischen diesen beiden Tabellen gibt es eine Eins-zu-Viele-Beziehung. (Ein Mitarbeiter kann mehrere Abschlüsse haben.) Wenn ich einen Mitarbeiter lösche, möchte ich auch alle Ebenen dieses Mitarbeiters löschen. Ich habe in einem anderen Beitrag gefunden, dass ich cascade delete dafür verwenden kann. Ich habe versucht, Kaskadenlöschung hinzuzufügen, aber beim Versuch, einen Mitarbeiter zu löschen, erhalte ich einen Fehler. Ich habe versucht, die folgenden:So aktivieren Sie kaskadieren löschen
Meine beiden Tabellen:
public partial class Degree
{
public int DegreeId { get; set; }
public string Course { get; set; }
public string Level { get; set; }
public string School { get; set; }
public int Employee_BSN { get; set; }
public virtual Employee Employee { get; set; }
}
public partial class Employee
{
public Employee()
{
this.Degrees = new HashSet<Degree>();
}
public int BSN { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public virtual ICollection<Degree> Degrees { get; set; }
}
Nach ein paar Beiträge zu lesen ich diese gefunden. Aber das hat mein Problem nicht gelöst.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Degree>()
.HasRequired(t=>t.Employee)
.WithMany(t=>t.Degrees)
.HasForeignKey(d=>d.Employee_BSN)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
In meinem Mitarbeiter Controller habe ich folgende Löschmethode
// GET: Employees/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Employee employee = db.Employees.Find(id);
if (employee == null)
{
return HttpNotFound();
}
return View(employee);
}
// POST: Employees/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Employee employee = db.Employees.Find(id);
db.Employees.Remove(employee);
db.SaveChanges();
return RedirectToAction("Index");
}
Fehler
Die DELETE-Anweisung in Konflikt mit der REFERENCE-Einschränkung "FK_Degree_Employee". Der Konflikt ist in der Datenbank "\ APP_DATA \ DATABASE.MDF", Tabelle "dbo.Degree", Spalte "Employee_BSN" aufgetreten. Die Anweisung wurde beendet.
'„ aber ich erhalte eine Fehlermeldung“'. Bitte fügen Sie den Fehler hinzu. – TyCobb
Sorry, habe vergessen, den Fehler hinzuzufügen. –
Wahrscheinlich haben Sie kaskadiertes Löschen in der Datenbank nicht konfiguriert. EF geht davon aus, dass es da ist. –