- 尝试新的开发组合:Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之配置IdentityServer
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之数据迁移
- 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方法来初始化一些数据。