级联删除linq EF4.0
Cascading deleting linq EF4.0
我有一个这样的 SQL 服务器数据库:master table、details table、subdetails table。我使用 Linq 和 EF 4.0。
所以master可以有更多的细节,每个细节可以有更多的子细节。
我有一个 MASTER ID,我想删除这条记录。
如何在 un colpo solo (EF4.0) 中删除包含详细信息和子详细信息的主记录?
EF默认为所有实体启用级联删除效果。
以下复制自here。
考虑以下具有 one-to-many 关系的学生和标准实体。
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; }
}
以下示例演示具有 one-to-many 关系的实体之间的级联删除效果。
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();
}
在上面的示例中,它从 db 中删除了 standard1,并且还为所有引用 standard1 的记录将 Students table 中的 standard_StandardId FK 列设置为空。
如果一个或另一个实体被删除,EF 会自动删除 table 中间 many-to-many 关系实体的相关记录。
因此,EF默认为所有实体启用级联删除效果。
我有一个这样的 SQL 服务器数据库:master table、details table、subdetails table。我使用 Linq 和 EF 4.0。
所以master可以有更多的细节,每个细节可以有更多的子细节。
我有一个 MASTER ID,我想删除这条记录。
如何在 un colpo solo (EF4.0) 中删除包含详细信息和子详细信息的主记录?
EF默认为所有实体启用级联删除效果。
以下复制自here。
考虑以下具有 one-to-many 关系的学生和标准实体。
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; }
}
以下示例演示具有 one-to-many 关系的实体之间的级联删除效果。
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();
}
在上面的示例中,它从 db 中删除了 standard1,并且还为所有引用 standard1 的记录将 Students table 中的 standard_StandardId FK 列设置为空。
如果一个或另一个实体被删除,EF 会自动删除 table 中间 many-to-many 关系实体的相关记录。
因此,EF默认为所有实体启用级联删除效果。