我花了最后一个小时阅读了大量网页,我想我已经做到了。但我想确定一下。这是我认为级联删除的规则。
许多:1 :: 删除帖子条目不会级联删除父博客条目。
public class Post
{
public Blog Blog { get; set; }
}
public class Blog
{
public ICollection<Post> Posts { get; set; }
}
Many:1 nullable :: 让 post.Blog 可以为 null 没有区别,删除 Post 不会删除它指向的 Blog 条目。
public class Post
{
public Blog? Blog { get; set; }
}
public class Blog
{
public ICollection<Post> Posts { get; set; }
}
1:Many :: 删除博客条目将级联删除其帖子集合中的所有帖子条目。
public class Blog
{
public ICollection<Post> Posts { get; set; }
}
public class Post
{
public Blog Blog { get; set; }
}
Many:Many :: 从 Student.Classes 中删除一个班级,然后将从 Class.Students 中删除该学生。因此,删除一条记录会从配对集合中恰好删除一条记录。
public class Student
{
public ICollection<Class> Classes { get; set; }
}
public class Class
{
public ICollection<Student> Students { get; set; }
}
1:1 not nullable :: 删除一个人对象将删除其匹配的地址对象。删除地址对象将删除其匹配的人对象。 问题: 这是一个周期性的问题吗?或者 EF 或 DB 可以处理这种特定情况吗?
public class Person
{
public Address Address { get; set; }
}
public class Address
{
public Person Person { get; set; }
}
1:1 nullable :: 删除地址对象不会删除匹配的人对象。 person.Address 将被设置为 null。但是删除 person 对象将删除 person.Address 对象。
public class Person
{
public Address? Address { get; set; }
}
public class Address
{
public Person Person { get; set; }
}
以上都对吗?