Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 418
- Предыдущая
- 418/642
- Следующая
ApplicationDbContextdotnet ef database update ReplaceTimeStamp -c AutoLot.Samples.ApplicationDbContextТеперь база данных соответствует вашей модели.
Аннотации и навигационные свойства
Аннотация
ForeignKey<ИмяТипа>IdСвойство
InversePropertyInversePropertyИнтерфейс Fluent API
С помощью интерфейса Fluent API сущности приложения конфигурируются посредством кода С#. Методы предоставляются экземпляром
ModelBuilderOnModelCreating()DbContextОтображение классов и свойств
В следующем коде воспроизведен предыдущий пример
CarmodelBuilder.Entity<Car>(entity =>{ entity.ToTable("Inventory","dbo"); entity.HasKey(e=>e.Id); entity.HasIndex(e => e.MakeId, "IX_Inventory_MakeId"); entity.Property(e => e.Color) .IsRequired() .HasMaxLength(50); entity.Property(e => e.PetName) .IsRequired() .HasMaxLength(50); entity.Property(e => e.TimeStamp) .IsRowVersion() .IsConcurrencyToken();});Если создать и запустить миграцию прямо сейчас, то вы обнаружите, что ничего не изменилось, поскольку вызываемые методы Fluent API соответствуют текущей конфигурации, определенной соглашениями и аннотациями данных.
Стандартные значения
Интерфейс Fluent API предлагает методы, позволяющие устанавливать стандартные значения для столбцов. Стандартное значение может иметь тип значения или быть строкой SQL. Например, вот как установить стандартное значение
ColorCarBlackmodelBuilder.Entity<Car>(entity =>{... entity.Property(e => e.Color) .HasColumnName("CarColor") .IsRequired() .HasMaxLength(50)<b> .HasDefaultValue("Black");</b>});Чтобы установить значение для функции базы данных (вроде
getdate()HasDefaultValueSql()CarDateTimeDateBuiltgetdate()modelBuilder.Entity<Car>(entity =>{ ... entity.Property(e => e.DateBuilt) .HasDefaultValueSql("getdate()");});Как и в случае применения SQL для вставки записи, если свойство, которое отображается на столбец со стандартным значением, имеет значение, когда EF Core вставляет запись, то вместо стандартного значения столбца будет использоваться значение свойства. Если значение свойства равно
nullПроблема возникает при наличии стандартного значения у типа данных свойства. Вспомните, что стандартное значение для числовых типов составляет
0false0falseНапример, добавьте в класс
CarboolIsDrivabletrue// Car.cspublic class Car : BaseEntity{ ...<b> public bool IsDrivable { get; set; }</b>}- Предыдущая
- 418/642
- Следующая
