26 lines
1019 B
C#
26 lines
1019 B
C#
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
|
||
using System.Linq;
|
||
|
||
namespace IRaCIS.Core.Test
|
||
{
|
||
/// <summary>
|
||
/// Efcore 最新支持批量配置字符串类型长度作为保底的 官网参考:https://learn.microsoft.com/zh-cn/ef/core/modeling/bulk-configuration#conventions
|
||
/// </summary>
|
||
public class MaxStringLengthConvention : IModelFinalizingConvention
|
||
{
|
||
public void ProcessModelFinalizing(IConventionModelBuilder modelBuilder, IConventionContext<IConventionModelBuilder> context)
|
||
{
|
||
foreach (var property in modelBuilder.Metadata.GetEntityTypes()
|
||
.SelectMany(
|
||
entityType => entityType.GetDeclaredProperties()
|
||
.Where(
|
||
property => property.ClrType == typeof(string))))
|
||
{
|
||
property.Builder.HasMaxLength(200);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|