ABP EF Core为迁移设置默认字符串长度
使用EF Core时,我们可以用MaxLength特性,为实体的字符串设置最大长度限制。
[MaxLength(256)]
public string Name { get; set; }
但是如果项目中,每个属性都要手写的话就太麻烦了,而且容易遗漏。
我们还可以通过重写DbContext的OnModelCreating方法,来修改所有字符串字段的最大长度。
重写OnModelCreating
修改前
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureLIMS();
}
修改后
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// string类型的字段如果没有配置MaxLength,则默认添加256长度限制
foreach (var property in builder.Model.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p => p.ClrType == typeof(string)))
{
if (property.GetMaxLength().HasValue) continue;
property.SetMaxLength(256);
property.SetIsFixedLength(false);//false映射为nvarchar,true映射为nchar
}
builder.ConfigureLIMS();
}