У меня проблема с настройкой отношения один-ко-многим в ef core 2.2. У меня следующий сценарий (сущности разные, но это не актуально). Проблема:
Этот класс уже существует в базе кода, и я не могу его коснуться
public class Order : Entity {
// public ICollection<OrderLine> Orders; // I would like to have it but I don't and I can't
}
Мне нужно добавить этот класс:
public class OrderLine: Entity {
public Order Order { get; set; } //I have only this
}
Мне нужен технический совет. Я написал конфигурацию для класса:
public void Configure(EntityTypeBuilder<OrderLine> builder)
{
builder.HasKey(x=>x.Id);
builder.Property(x=>x.Order).IsRequired();
}
Это, к сожалению, дает мне следующую ошибку при добавлении миграции:
Свойство 'Order.OrderLine' имеет тип'OrderLine', который не поддерживается текущим поставщиком базы данных. Либо измените тип свойства CLR, либо игнорируйте свойство, используя атрибут «[NotMapped]» или «EntityTypeBuilder.Ignore» в «OnModelCreating».
Когда я удаляю строку: builder.Property(x=>x.Order).IsRequired();
поле становится обнуляемым, что недопустимо.
Я использовал следующую уловку:
builder.Ignore(x => x.Order);
builder.HasOne<Order>().WithMany().IsRequired().OnDelete(DeleteBehavior.Restrict);
Но затем, когда я устанавливаю поле Order при построении OrderLine, я получаю исключение при сохранении в базу данных, потому что OrderId получает значение по умолчанию (этоигнорируется). Есть ли способ решить эту проблему?