すべての文字列プロパティの最大長を変更する

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の「まだ欠けている」機能の1つであると考えており、後のバージョンで追加される予定です。

それまでは、私が提案できる最も近いものは(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は合法ですか? はい、理由を学ぶ