Можно ли гарантировать, что свойство навигации (дочерняя сущность) будет удалено при удалении родительской сущности с помощью EF Core Fluent Api?
У меня есть следующее соотношение:
public class Estate {
public Guid Id {get; set;}
public Guid AddressId {get; set;}
public Address Address {get; set;}
}
public class Address {
public Guid Id {get; set;}
}
Адрес должен быть свойством навигации в поместье, и поэтому я не могу добавить внешний ключ в адрес для поместья.Таким образом, в этом случае адрес действительно не зависит от состояния, так как у него нет внешнего ключа?
Я ищу поведение, когда я удаляю состояние, соответствующий адрес должен быть удален какхорошо.
Я безуспешно пробовал следующие конфигурации:
1)
modelBuilder.Entity<Estate>()
.HasOne(e => e.Address)
.WithOne()
.HasForeignKey<Estate>(e => e.Id)
.OnDelete(DeleteBehavior.Cascade);
2)
modelBuilder.Entity<Estate>()
.HasOne(e => e.Address)
.WithOne()
.HasForeignKey<Estate>(e => e.AddressId)
.OnDelete(DeleteBehavior.Cascade);
3)
modelBuilder.Entity<Estate>()
.HasOne(e => e.Address)
.WithOne()
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
4)
modelBuilder.Entity<Estate>()
.HasOne(e => e.Address)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
Возможно ли вообще сделать это без добавления отношения из адреса в поместье?Если нет, то я полагаю, что единственный способ удалить адрес при удалении недвижимости - это сделать это вручную (?):
_context.Estates.Remove(estate);
_context.Addresses.Remove(estate.Address);
Заранее спасибо!