Я пытаюсь создать очень простую модель базы данных с EF Core 3, но у меня возникают проблемы с очень простыми отношениями.
У меня есть классы: Customer, Document и Address.
public class Customer
{
public int Id { get; set; }
public Address Address { get; set; }
}
public class Document
{
public int Id { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
}
Итак, я хочу использовать адрес generi c в разных сущностях.
Я пытаюсь смоделировать его следующим образом:
public void Configure(EntityTypeBuilder<Customer> builder)
{
builder.HasKey(f => f.Id);
builder.HasOne(f => f.Address).WitMany().IsRequired().OnDelete(DeleteBehavior.Cascade);
}
public void Configure(EntityTypeBuilder<Document> builder)
{
builder.HasKey(f => f.Id);
builder.HasOne(f => f.Address).WitMany().IsRequired().OnDelete(DeleteBehavior.Cascade);
}
public void Configure(EntityTypeBuilder<Address> builder)
{
builder.HasKey(f => f.Id);
builder.Property(f => f.Street);
builder.Property(f => f.City);
}
Но проблема в том, что когда у меня есть документ с прикрепленным к нему адресом, и я пытаюсь удалить этот документ, адрес не будет удален. По какой-то причине Address является основным документом.
Как моделировать такие отношения? У меня не может быть свойства навигации в объекте Address, поскольку Address может использоваться в нескольких различных объектах в качестве обобщенного c представления адреса.