c# - EF Core 2.0,删除单个导航属性,一对一,使用 Fluent Api
问题描述
是否可以确保在使用 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);
提前致谢!
解决方案
推荐阅读
- python - Wolfram 内核和 Elastic Beanstalk?
- reactjs - 反应useEffect fetch - TypeError?
- flutter - 在颤动中更改文本字段中某些单词的颜色(不是全部;一些)
- javascript - 适应图形/ svg宽度的Guage值
- flutter - 来自 api 和 stepper 的 Flutter 下拉菜单
- c - 为什么 config_read_file() 返回 config_false?
- c - 为什么程序中的for循环不能正常工作。它显示正确的输出但给出奇怪的输出
- python - 是否可以将位置嵌入添加到多个嵌入层?
- synchronization - 我想在一个屏幕中查看联系人而不点击“更多”
- javascript - 如何获得开/关序列间隔之间的时间?