nhibernate - 删除一对零或一个子记录不起作用
问题描述
我正在尝试映射几个表,其中Bar中的主键是Foo的外键,即 1..0:1 关系。
我的映射如下所示:
class FooMapping : ClassMap<Foo>
{
public FooMapping()
{
Table("Foo");
Id(x => x.Id).Column("ID");
HasOne(x => x.Bar).Cascade.All();
}
}
class BarMapping : ClassMap<Bar>
{
public BarMapping()
{
Table("Bar");
Id(x => x.FooId).GeneratedBy.Foreign("Foo");
HasOne(x => x.Foo).Constrained();
}
}
问题是,当我尝试通过设置and删除Bar的实例时,记录不会从数据库中删除。Foo.Bar = null
Bar.Foo = null
我错过了什么?
解决方案
通过使用 HasMany 和 Cascade.AllDeleteOrphan 建立这种关系,还有其他肮脏的解决方案。
class FooMapping : ClassMap<Foo>
{
public FooMapping()
{
Table("Foo");
Id(x => x.Id).Column("ID");
HasMany(x => x.Bar).KeyColumn("FooId").Cascade.AllDeleteOrphan();
}
}
推荐阅读
- linux - 可以在 dash shell 或 bourne shell 中使用子字符串扩展吗?
- vba - 使用 ms access vba 禁用选项组/矩形框中的所有命令按钮
- python - 二维以上的数据框切片
- c++ - 如何使用winsock32处理多客户端
- c# - Visual Studio SDK 是否提供了一种方法来确定打开文档的 pin 状态?
- python - Selenium chromedriver 从 cron 作业中失败?
- python - 从 python 文件中读取变量
- android - 在片段中使用 DatePicker 后应用程序崩溃
- c - 使用 XSETBV 写入 XCR0 会在支持 MPX 的硬件上的 VM 中创建一般保护故障
- java - HttpMessageNotWritableException:无法写入 JSON:将数据添加到数据库后无法初始化代理