外键的级联删除: 如A表中有主键idA, B表中设置外键(ForeignKey)为A表中的主键idA, 当A表中的记录被删除时, B表中所有引用此条记录的记录(即所有外键为idA的记录)将自动被删除
EntityFramework中默认是开启此功能的, 不需要时可以将其关闭,即不使用"Cascade on delete"约束.
例:
class TestDbContext :DbContext { public TestDbContext() : base("TestDb") { // 禁用延迟加载 this.Configuration.LazyLoadingEnabled = false; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //base.OnModelCreating(modelBuilder); // 禁用默认表名复数形式 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //---关闭级联删除 // 禁用一对多级联删除 modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); // 禁用多对多级联删除 modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); //--- //---由于SQLite的EntityFramework库没有代码优先模式下自动创建数据库的功能,所以使用SQLiteCodeFirst 库自动创建数据库, //当数据库不存在时创建 var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<TestDbContext>(modelBuilder); Database.SetInitializer(sqliteConnectionInitializer); //--- } }