HasDefaultValue против установки значения по умолчанию из конструктора - PullRequest
0 голосов
/ 29 октября 2018

При использовании EF Core у нас есть возможность установить значение по умолчанию для свойства.

public class Foo
{
    public int Bar { get; set; }
}

public class FooConfiguration : IEntityTypeConfiguration<Foo>
{
    public void Configure(EntityTypeBuilder<Foo> builder)
    {
        builder.Property(s => s.Bar).HasDefaultValue(1337);
    }
}

Когда нам следует использовать HasDefaultValue вместо инициализации по умолчанию внутри класса?

public class Foo
{
    public int Bar { get; set; } = 1337;

    // or inside constructor...
    // public Foo { Bar = 1337; }
}

Или мы должны сделать оба? Но в этом случае HasDefaultValue кажется избыточным. Кажется, что выбор, где вы можете выбрать только 1 вариант.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Метод HasDefaultValue () указывает

Значением по умолчанию для столбца является значение, которое будет вставлено, если будет вставлена ​​новая строка, но для столбца значение не указано.

Инициализация свойства со значением по умолчанию в классе приведет к тому, что все объекты, инициализированные в классе, будут иметь указанное значение по умолчанию, если не указано иное. В вашем случае это означает, что даже неприкрепленные объекты будут иметь значение по умолчанию, в то время как при вставке объекта в базу данных будет использоваться метод HasValue(). Это также означает, что если при добавлении метода HasDefaultValue() в базе данных уже есть пустые значения, они не будут перезаписаны.

0 голосов
/ 29 октября 2018

Я не знаю, правильно ли я понимаю, но вы можете использовать методы получения / установки для установки различных значений по умолчанию для различных свойств, как показано ниже,

 private int _bar = 1337;
 public int Bar{
     get{
         return _bar;
     }
     set{
         _bar = value;
     }
 }

 private int _secondBar = 1234;
 public int SecondBar{
     get{
         return _secondBar;
     }
     set{
         _secondBar = value;
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...