У меня проблемы с отображением ядра платформы сущностей.
Я получаю это исключение: «Отношение« Платеж »к« Покупке. Платежи »не поддерживается, поскольку принадлежащий объект типа« Покупка »не может быть основной стороной отношений, не связанных с владением». во время отладки теста для этой функции.
Можете ли вы, ребята, помочь мне с этим? :)
Я попытался внести несколько изменений в эти сопоставления, но он продолжает терпеть неудачу.
public class Car : Entity
{
public Purchase Purchase { get; private set; }
}
public class Purchase {
public List<Payment> Payments { get; private set; }
}
public class Payment : PaymentBase {
}
public abstract class PaymentBase : Entity {
public long CarId { get; protected set; }
public Car Car { get; protected set; }
public Purchase Purchase { get; private set; }
}
public class MyContext : DbContext {
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
public DbSet<Car> Cars { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new CarConfig());
modelBuilder.ApplyConfiguration(new PurchaseConfig());
modelBuilder.ApplyConfiguration(new PaymentConfig());
base.OnModelCreating(modelBuilder);
}
}
public class CarConfig : IEntityTypeConfiguration<Car>
{
public void Configure(EntityTypeBuilder<Car> builder)
{
builder.OwnsOne(x => x.Purchase).HasForeignKey("ShadowId");
builder.ToTable("CAR_DEALS");
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).IsRequired().HasColumnName("CAR_ID");
}
}
public class PurchaseConfig : IEntityTypeConfiguration<Purchase>
{
public void Configure(EntityTypeBuilder<Purchase> builder)
{
builder.ToTable("CAR_DEALS");
builder.HasMany(x => x.Payments).WithOne();
}
}
public class PaymentConfig : IEntityTypeConfiguration<Payment>
{
public void Configure(EntityTypeBuilder<Payment> builder)
{
builder.ToTable("PAYMENTS");
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).IsRequired().HasColumnName("PAYMENT_ID");
builder.HasOne(x => x.Purchase).WithMany(x => x.Payment);
builder.Ignore(x => x.Purchase);
builder.Property(x => x.CarId).HasColumnName("CAR_ID");
}
}