更改所有字符串属性最大长度

时间:2017-01-02 12:39:50

标签: c# entity-framework entity-framework-core

在EF 6中,我可以这样做:

modelBuilder
  .Properties()
  .Where(p => p.PropertyType == typeof(string) && 
              p.GetCustomAttributes(typeof(MaxLengthAttribute), false).Length == 0)
  .Configure(p => p.HasMaxLength(2000));

由于EF7 ModelBuilder没有Properties()功能,我如何在EF7中做同样的事情?

1 个答案:

答案 0 :(得分:9)

我认为这是"仍然缺乏" EF Core中的功能,并期望在以后的版本中添加它。

在此之前,我能建议的最接近(对于v1.1.0)如下:

foreach (var p in modelBuilder.Model
    .GetEntityTypes()
    .SelectMany(t => t.GetProperties())
    .Where(p => p.ClrType == typeof(string) && p.GetMaxLength() == null))
{
    p.SetMaxLength(2000);
}