Как изменить тип столбца в БД через EF Core?
Имеются 2 сущности:
public class AnimalBreead : BaseEntity
{
public string Name { get; set; }
public AnimalType AnimalType { get; set; }
}
public class AnimalEntity:BaseEntity
{
public string Name { get; set; }
public AnimalType AnimalType { get; set; }
public virtual AnimalBreead AnimalBreead { get; set; }
}
В таблицу Animals почему-то добавляется AnimalBreeadId, я рассчитывал, что там будет AnimalBreeadName.
public class DataContext : DbContext
{
public DbSet<AnimalEntity> Animals { get; set; }
public DbSet<AnimalBreead> AnimalBreeads { get; set; }
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AnimalBreead>().Property(e => e.AnimalType)
.HasConversion(
x => x.ToString(),
v => (AnimalType)Enum.Parse(typeof(AnimalType), v));
}
}
Как мне организовать добавление Animal в таблицу Animals? Со связями ещё не работал. Прошу для примера)
Ответы (1 шт):
AnimalBreead и AnimalEntity - это разные сущности и связаны они могут быть через foreign key. Entity Framework сам его заводит, т.к. вы этого не делаете, на основании связи public virtual AnimalBreead AnimalBreead { get; set; }
Если вы хотите в AnimalEntity видеть Name от связанного AnimalBreead, то вам нужно в AnimalEntity добавить свойство:
public class AnimalEntity : BaseEntity
{
...
[NotMapped] //указывает что это свойство не является частью таблицы AnimalEntity
public virtual string AnimalBreeadName => AnimalBreead?.Name;
}
Соответственно при загрузке AnimalEntity вам нужно делать Include(t => t.AnimalBreead) чтобы получить это свойство.
