Как установить ограничение по умолчанию в Entity Framework 6 Code First?

.net c# ef-code-first entity-framework entity-framework-6

Вопрос

В устаревшем приложении большинство свойств строки не могут быть нулевыми и должны иметь значение по умолчанию string.empty.

Я знаю, что это возможно сделать с миграциями, но я ищу способ сделать это, используя свободный интерфейс конфигурации:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Properties<string>().Configure(c =>
        {
            c.HasMaxLength(255);

            if (!c.ClrPropertyInfo.IsDefined(typeof (NullableAttribute), false))
            {
                c.IsRequired();
                // I want to set a default value (string.empty) here.
            }
    }

Есть ли способ сделать это, или я обречен на инициализацию всех строк в конструкторах сущностей?

Принятый ответ

Теперь ответ Да :

AddColumn("[table name]", 
          "[column name]", 
          c => c.Boolean(nullable: false, defaultValue: false));

Популярные ответы

К сожалению, ответ прямо сейчас - «Нет».

Но вы можете голосовать за лучшую поддержку значений по умолчанию

EDIT 30 марта 2015: он входит в EF7 ... Значения базы данных базы данных поддержки в Code First

EDIT 30 января 2017: общая поддержка значений базы данных по умолчанию является частью EF Core (новое имя для EF7) ... Значения по умолчанию

EDIT 17 января 2018 года . Я не уверен, почему люди комментируют, что EF7 по-прежнему является «трубной мечтой». EF7 (переименованный EF Core) был выпущен 27 июня 2016 года и поддерживает настройку значений по умолчанию в Code First с использованием FluentAPI следующим образом:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property(b => b.Rating)
        .HasDefaultValue(3);
}

EF Core 2.0 был выпущен 14 августа 2017 года



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему