/ / Kaskadieren Löschen von linq EF4.0 - c #, Kaskadieren

Kaskadieren Löschen von linq EF4.0 - c #, Kaskadieren

Ich habe eine SQL Server-Datenbank wie diese: Master-Tabelle, Detail-Tabelle, Subdetails-Tabelle. Und ich benutze Linq und EF 4.0.

Master kann also mehr Details haben und jedes Detail kann weitere Unterdetails haben.

Ich habe eine MASTER-ID und möchte diesen Datensatz löschen.

Wie kann ich in un colpo solo (EF4.0) einen Stammsatz mit Details und Unterdetails löschen?

Antworten:

1 für die Antwort № 1

EF aktiviert standardmäßig den kaskadierenden Löscheffekt für alle Entitäten.

Folgendes wird aus kopiert Hier.

Betrachten Sie die folgenden Schüler- und Standardeinheiten, die eine Eins-zu-Viele-Beziehung haben.

public class Student
{
public Student() { }

public int StudentId { get; set; }
public string StudentName { get; set; }

public virtual Standard Standard { get; set; }
}

public class Standard
{
public Standard()
{
Students = new List<Student>();
}
public int StandardId { get; set; }
public string Description { get; set; }

public virtual ICollection<Student> Students { get; set; }
}

Das folgende Beispiel zeigt den Kaskadenlöscheffekt zwischen Entitäten mit einer Eins-zu-Viele-Beziehung.

using( var ctx = new SchoolContext() ) {

var student1 = new Student() { StudentName = "James" };
var student2 = new Student() { StudentName = "Gandhi" };

var standard1 = new Standard() { StandardName = "Standard 1" };

student1.Standard = standard1;
student2.Standard = standard1;

ctx.Students.Add( student1 );
ctx.Students.Add( student2 );

//inserts students and standard1 into db
ctx.SaveChanges();

//deletes standard1 from db and also set standard_StandardId FK column in Students table to null for
// all the students that reference standard1.
ctx.Standards.Remove( standard1 );

ctx.SaveChanges();
}

Im obigen Beispiel löscht es standard1 aus db und setzt außerdem die Spalte standard_StandardId FK in der Tabelle Students für alle Datensätze, die auf standard1 verweisen, auf null.

EF löscht automatisch verwandte Datensätze in der mittleren Tabelle für viele-zu-viele-Beziehungseinheiten, wenn die eine oder andere Einheit gelöscht wird.

EF ermöglicht somit standardmäßig den kaskadierenden Löscheffekt für alle Entitäten.