• 基于EF创建数据库迁移


    通过创建的实体类和DbContext类利用EF的Code First数据库迁移创建数据库。

    下面看代码。

    一、先创建实体类

    我先添加一个BaseEntity,里面就一个属性

    [Key]
            public virtual Guid Id { set; get; }

    然后User表和Role表

    public class Users : BaseEntity
        {
            public string Name { get; set; }
            public Guid RoleId { get; set; }
            public virtual Roles Role { get; set; }
        }
    public class Roles:BaseEntity
        {
            public string Name { get; set; }
        }

    二、创建DatabaseContext

    public class DatabaseContext : DbContext
        {
            public DatabaseContext() : base("name=conn")
            {
    
            }
    
            public virtual DbSet<Users> Users { get; set; }
            public virtual DbSet<Roles> Roles { get; set; }
        }

    这里DbSet添加我要操作的实体。

    三、创建Configuration

    public class Configuration : DbMigrationsConfiguration<DatabaseContext>
        {
            public Configuration()
            {
                AutomaticMigrationsEnabled = false;
                ContextKey = "AbpDemo";
            }
    
            protected override void Seed(DatabaseContext context)
            {
                //base.Seed(context);
                new DefaultRoleAndUserBuilder(context).Build();//后面添加默认数据用的
            }
        }

    添加默认数据用的。比如添加管理员

    四、添加默认数据生成类

    public class DefaultRoleAndUserBuilder
        {
            private readonly DatabaseContext _context;
            public DefaultRoleAndUserBuilder(DatabaseContext context)
            {
                _context = context;
            }
    
            public void Build()
            {
                CreateUserAndRoles();
            }
    
            private void CreateUserAndRoles()
            {
                var adminRole = _context.Roles.FirstOrDefault(x => x.Name == "admin");
                if (adminRole == null)
                {
                    adminRole = _context.Roles.Add(new Models.Roles { Id = Guid.NewGuid(), Name = "admin" });
                    _context.SaveChanges();
                }
    
                var adminUser = _context.Users.FirstOrDefault(x => x.Name == "admin");
                if (adminUser == null)
                {
                    adminUser = _context.Users.Add(new Models.Users { Id = Guid.NewGuid(), Name = "admin", RoleId = adminRole.Id });
    
                    _context.SaveChanges();
                }
            }
        }

    五、生成数据库

    打开程序包管理器控制台,执行命令

    add-migration "InitialData"

    这是生成的cs文件的后缀名,执行完后会发现Migrations文件夹多了一个文件,但是数据库没有生成,看下图。

    继续执行命令

    update-database

    这样数据库也有了。

  • 相关阅读:
    hdu 3555 Bomb 【数位DP】
    ibatis动态的传入表名、字段名
    ibatis把表名作为一个参数报错问题的解决方案
    事务——原子性、一致性、隔离性和持久性的理解
    struts2 集成webservice 的方法
    MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK
    Javascript禁止网页复制粘贴效果,或者复制时自动添加来源信息
    asp.net关于Cookie跨域(域名)的问题
    Java cookie的使用
    关于Cookie跨域操作的一些总结
  • 原文地址:https://www.cnblogs.com/xiaoquangege/p/6117346.html
Copyright © 2020-2023  润新知