У меня есть таблица SQL Server с определенными полями, которые устанавливаются базой данных через значения по умолчанию, которые после сохранения должны никогда не изменяться снова (например, DateCreated
).
В компоновщике моделей классов Entity Framework Core 2.1 как мы «помечаем» поле как доступное только для чтения?Другими словами, я не хочу, чтобы какой-либо код мог устанавливать или перезаписывать эти поля.
Основываясь на моем поиске, я бы добавил .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
в конце .Property()
?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Doohicky>(entity =>
{
... // other fields
entity.Property(e => e.DateCreated).HasDefaultValueSql("(getdate())");
... // other fields
});
}
Или я могу добавить аннотацию [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
в поле DateCreated
?
public class Doohicky
{
public DateTime DateCreated {get; set;}
}
Или есть другой способ полностью?
Я хочу, чтобы он был таким, чтобы вВ будущем, если кто-нибудь решит написать что-то подобное, возникнет ошибка.
model.DateCreated = new DateTime();
dbContext.SaveChanges() // errors out
Буду признателен за любую проницательность.