Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 级联删除linq EF4.0_C#_Cascading - Fatal编程技术网

C# 级联删除linq EF4.0

C# 级联删除linq EF4.0,c#,cascading,C#,Cascading,我有这样一个SQL Server数据库:主表、详细表、子详细表。我使用Linq和EF4.0 因此,主控可以有更多的细节,每个细节可以有更多的子细节 我有一个主ID,我想删除此记录 如何在un colpo solo(EF4.0)中删除包含详细信息和子详细信息的主记录?EF默认为所有实体启用级联删除效果。 以下是从中复制的 考虑以下具有一对多关系的学生实体和标准实体 public class Student { public Student() { } public int Stu

我有这样一个SQL Server数据库:主表、详细表、子详细表。我使用Linq和EF4.0

因此,主控可以有更多的细节,每个细节可以有更多的子细节

我有一个主ID,我想删除此记录


如何在un colpo solo(EF4.0)中删除包含详细信息和子详细信息的主记录?

EF默认为所有实体启用级联删除效果。

以下是从中复制的

考虑以下具有一对多关系的学生实体和标准实体

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; }
}
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,并将Students表中引用standard1的所有记录的standard_StandardId FK列设置为null

EF如果删除一个或多个实体,则自动删除中间表中的多个对多关系实体的相关记录。


因此,默认情况下,EF为所有实体启用级联删除效果。

您的代码在哪里?您尝试过什么?您采用哪种方式:模型优先还是数据库优先?@勤奋按键:我用数据库优先回答。。但我有三个亲戚,不是两个。我想删除master、details和subdetails..@user2080358 master-details关系的机制也适用于details-subdetails关系,你没看到吗?@user2080358没关系。一旦父母被删除,孩子,孙子,他们的孩子等等。。。所有内容都将被删除。这是一个级联过程effect@CodingYoshi:但我必须将OnDelete property association=Cascade?@user2080358不您不需要。默认情况下,EF会这样做。如果您不想要它,那么您需要禁用它。如果你想禁用它,请阅读我在答案中链接的文章。