Quando si utilizza EF Core, è possibile impostare il valore predefinito sulla proprietà.
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);
}
}
Quando dovremmo preferire l'utilizzo di HasDefaultValue
per inizializzare l'impostazione predefinita all'interno di una classe?
public class Foo
{
public int Bar { get; set; } = 1337;
// or inside constructor...
// public Foo { Bar = 1337; }
}
O dovremmo fare entrambi? Ma in questo caso, HasDefaultValue
sembra ridondante. Sembra una scelta in cui puoi scegliere solo 1 opzione.
Il metodo HasDefaultValue () specifica
Il valore predefinito di una colonna è il valore che verrà inserito se viene inserita una nuova riga ma non viene specificato alcun valore per la colonna.
L'inizializzazione della proprietà con il valore predefinito nella classe renderà tutti gli oggetti inizializzati della classe con il valore predefinito specificato, se non diversamente specificato. Nel tuo caso, ciò significa che anche gli oggetti non collegati avranno il valore predefinito, mentre verrà utilizzato il metodo HasValue()
quando si inserisce l'oggetto nel database. Significa anche che se sono già presenti valori vuoti nel database quando si aggiunge il metodo HasDefaultValue()
, non verranno sovrascritti.