EntityFramework SQLiteCodeFirst 自动创建数据库 关闭级联删除

外键的级联删除: 如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);
            //---
        }
    }
原文地址:https://www.cnblogs.com/gmcn/p/5830512.html