更改所有字符串屬性最大長度

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中做同樣的事情?

一般承認的答案

我認為這是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);
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因