Есть ли свойство isRequired в классе Entity Framework? Попытка получить свойства метаданных для модели - PullRequest
1 голос
/ 20 июня 2019

В настоящее время мы пытаемся получить метаданные структуры сущностей в нашу модель представления, и мы запросили конструктор моделей, и мы можем получить максимальную длину, однако мы не можем получить IP-свойство isRequired.

// What our controller looks like: 
var maxLengthOfStrings = _db.Model
    .FindEntityType(typeof(Validation))
    .GetProperties()
    .Where(p => p.ClrType == typeof(string))
    .ToDictionary(prop => prop.Name, prop => new {
         MaxLegnth = prop.GetMaxLength(),
         // The part that is saying required doesn't exist
         // in the context
         IsRequired = prop.IsRequired()
      });

// What our db context file looks like:
modelBuilder.Entity<DeploymentEnvironment>(entity =>
            {
                entity.HasKey(e => e.Code);

                entity.Property(e => e.Code)
                    .HasMaxLength(100)
                    .ValueGeneratedNever();

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(200);
         });

Получена ошибка: «IProperty не содержит определения для« IsRequired », и доступный метод расширения« IsRequired », принимающий первый аргумент типа« IProperty », не найден.

1 Ответ

1 голос
/ 20 июня 2019

Полагаю, вам нужно привести PropertyInfo к PropertyDescriptor, а затем проверить атрибуты. Примерно так:

IsRequired = p.Cast<PropertyDescriptor>().Where(p => p.Attributes.Cast<Attribute>().Any(a => a.GetType() == typeof(RequiredAttribute)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...