2017-01-02 2 views
5

В 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?

ответ

6

Я полагаю, что это одна из «все еще недостающих» функциональных возможностей в 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); 
} 
Смежные вопросы