Я сейчас настраиваю свою базу данных в своем проекте Asp.Net 5, используя сущность framework 7, ранее с EF 6, когда я хотел сделать некоторые из моих столбцов нулевыми , я хотел бы использовать:Entity Framework 7 Fluent API не распознает IsOptional()
modelBuilder.Entity<Article>().Property(t => t.ArticleDateModified).IsOptional();
Но мне кажется, что IsOptional
не является частью EF7 больше, мне было интересно, как я могу достичь того же с помощью EF7?
Edit: ответ Marc является действительно правильным, первый я, хотя это сработало, потому что я нашел то, что было как IsOptional
:
builder.Entity<Article>().Property(t => t.ArticleDateModified).IsRequired(false);
Но после того, как я провел некоторое испытание без него установить столбец базы данных обнуляемые потому, что я отметил, что, как обнуляемые в моей модели предметной области:
public DateTime? ArticleDateModified { get; set; }
также стоит отметить, что, когда я сделал DateTime
ненулевое и использовал т Хэ IsRequired(false)
, я получил следующее сообщение об ошибке:
The property 'ArticleDateModified' on entity type 'Article' cannot be marked as nullable/optional because the type of the property is 'DateTime' which is not a nullable type. Any property can be marked as non-nullable/required, but only properties of nullable types and which are not part of primary key can be marked as nullable/optional.
так, интересно, что является использование IsRequired(false)
здесь, если все, что я должен сделать, чтобы сделать столбец базы данных обнуляемым, чтобы сделать его обнуляемым в моем классе домена?
Я ответил несколько исследований, но сначала я должен был спросить: можете ли вы проверить гипотезу, удалив значение nullability из «ArticleDateModified» и увидев, что сгенерировано в БД при сопоставлении с «IsRequired (false)»? Если столбец равен нулю, независимо от того, что они решили в октябре, тот факт, что они построили его на основе июньского проектного решения, превзойдет решение октября, по крайней мере, до следующего выпуска основной версии, поскольку (технически) RTM API не изменится от RC1, и удаление или отключение API будет изменением. Если столбец не равен NULL, то он уже отключен. –
@MarcL. Я отредактировал вопрос с ответом. –