Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之数据迁移

  1. 尝试新的开发组合:Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS
  2. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之配置IdentityServer
  3. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之数据迁移
  4. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之添加实体

在上一篇文章通过修改迁移文件把索引字段的长度修改为了255,但感觉这并非持久之法,经过GitHub取经之后,终于明确了要在SimpleCmsWithAbpDbContext类中通过重写OnModelCreating方法的方式来重新定义字段长度,具体代码如下:

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity<User>().Property(p => p.EmailAddress).HasMaxLength(255);
            modelBuilder.Entity<User>().Property(p => p.NormalizedEmailAddress).HasMaxLength(255);
            modelBuilder.Entity<Setting>().Property(p => p.Name).HasMaxLength(255);
            modelBuilder.Entity<ApplicationLanguageText>().Property(p => p.Key).HasMaxLength(255);
            modelBuilder.Entity<UserLogin>().Property(p => p.ProviderKey).HasMaxLength(255);


        }

如果现在在程序包控制器管理器执行Add-Migration命令创建一个新的迁移,那么,会发现在不修改20170424115119_Initial_Migrations.cs的字段长度下,迁移时还是会出现错误的,因为那时候已经创建索引了,因而,最彻底的办法是多次执行Remove-Migration命令,把原有的迁移都清除,再重新创建迁移。而最直接的办法,就是把所有迁移文件全部删除。

要注意,在执行Remove-Migration命令前,要先把数据库里的表格全部清理掉,不然,执行命令会出错。

清理完原有的迁移文件后,就可以执行以下命令来创建新的迁移文件了:

Add-Migration InitialMigrations -Context SimpleCmsWithAbpDbContext

命令中,InitialMigrations是迁移的名称,参数Context用来指定要创建迁移的DbContext。

重新生成迁移后,现在的迁移文件就清爽很多了,没了之前那么多复杂的东西。

余下就是迁移PersistedGrant库,在SimpleCmsWithAbpDbContext类上添加IAbpPersistedGrantDbContext接口,接下来在类内添加以下代码来添加PersistedGrantEntity实体:

public DbSet<PersistedGrantEntity> PersistedGrants { get; set; }

还需要在OnModelCreating方法内,在最后添加以下语句来执行实体的Fluent API:

modelBuilder.ConfigurePersistedGrantEntity();

代码添加完成后,执行以下命令来添加PersistedGrant的迁移文件:

Add-Migration AddPersistedGrantEntity -Context SimpleCmsWithAbpDbContext

现在,迁移文件准备好了,可以运行Migrator项目来进行迁移了。这里不采用Update-Database来更新数据库的目的是要调用Seed方法来初始化一些数据。

猜你喜欢

转载自blog.csdn.net/tianxiaode/article/details/78858184
今日推荐