zoukankan      html  css  js  c++  java
  • 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);
                //---
            }
        }
  • 相关阅读:
    JQuery Ajax使用及注意事项
    边框叠加
    AngularJS的相关应用
    JS基础,你需要掌握的要点!
    JS基础部分小结
    JS的Dom树小结
    JQuery事件与动画
    HTML
    项目
    BZOJ4851: [Jsoi2016]位运算
  • 原文地址:https://www.cnblogs.com/gmcn/p/5830512.html
Copyright © 2011-2022 走看看