【发布时间】:2019-07-19 14:25:25
【问题描述】:
我有以下两个 C# 类:
public class Pet
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
}
public class PetOwner
{
public virtual string Id { get; set; }
public virtual Pet Pet { get; set; }
}
我正在通过代码映射它们。
在我的 PetOwner 类中,我有以下 Pet 的 ManyToOne 映射:
ManyToOne<Pet>("Pet", map =>
{
map.Lazy(LazyRelation.Proxy);
map.Column("Pet_Id");
map.Cascade(Cascade.Persist | Cascade.DeleteOrphans);
map.Insert(true);
map.Update(true);
});
现在当我按如下方式在我的 PetOwner 类上调用 delete 时,它可以工作并且 Pet 也被删除:
var owner = session.QueryOver<PetOwner>().Take(1).List().FirstOrDefault();
session.Delete(owner);
但是下面的代码根本没有删除宠物(也没有报错)。
session.Query<PetOwner>().Delete();
现在这只是在我的单元测试中,在现实生活中会有一个 where 子句,我可能不会删除所有项目,但为什么这个删除与使用实际数据库实体的显式删除不同?
有没有办法让它按我的预期工作?
【问题讨论】:
标签: c# nhibernate nhibernate-mapping cascading-deletes