Nhibernate 如何关闭级联删除?
我有背向参考的课程:Nhibernate 如何关闭级联删除?,nhibernate,fluent-nhibernate,nhibernate-mapping,s#arp-architecture,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,S#arp Architecture,Fluent Nhibernate Mapping,我有背向参考的课程: public class Employee : Entity { private string _Name; private string _Position; private Employee _SupervisorBackRef; private IList<Employee> _Subordinates; private IList<BusinessPartner
public class Employee : Entity
{
private string _Name;
private string _Position;
private Employee _SupervisorBackRef;
private IList<Employee> _Subordinates;
private IList<BusinessPartner> _BusinessPartners;
public virtual string Name
{
get { return _Name; }
set { _Name = value; }
}
public virtual string Position
{
get { return _Position; }
set { _Position = value; }
}
public virtual Employee SupervisorBackRef
{
get { return _SupervisorBackRef; }
set { _SupervisorBackRef = value; }
}
public virtual IList<Employee> Subordinates
{
get { return _Subordinates; }
set { _Subordinates = value; }
}
public virtual IList<BusinessPartner> BusinessPartners
{
get { return _BusinessPartners; }
set { _BusinessPartners = value; }
}
}
问题是,尽管我试图推翻它,但若我删除任何主管,它就会删除他的所有下属。我试着这样做:
class EmployeeOverride : IAutoMappingOverride<Employee>
{
public void Override(FluentNHibernate.Automapping.AutoMapping<Employee> mapping)
{
mapping.HasMany(x => x.Subordinates).Cascade.None();
mapping.HasOne(x => x.SupervisorBackRef).Cascade.None();
}
}
class EmployeeOverride:IAAutoMappingOverride
{
公共无效覆盖(FluentNHibernate.Automapping.Automapping映射)
{
mapping.HasMany(x=>x.substances.Cascade.None();
mapping.HasOne(x=>x.SupervisorBackRef).Cascade.None();
}
}
但这是行不通的。我尝试将其更改为其他不同的组合,我尝试了此覆盖删除,但没有任何帮助
如果我删除任何员工,它将删除其所有下属
我不知道如何识别这个覆盖函数是否有效
从互联网上的许多文本中,我了解到Cascade.None()应该可以工作,大多数人都有相反的问题,删除/更新/。。。不工作,所以我真的很困惑。问题是,我在另一个地方(在
HasManyConvention.Apply
)设置了实例Cascade.AllDeleteOrphan()
,优先级更高
附言:我不知道类似的帖子是否会被删除。对我来说,这似乎是一个问题,我在过去有更多的时间,但它是“我不知道我自己的代码…”的变体
class EmployeeOverride : IAutoMappingOverride<Employee>
{
public void Override(FluentNHibernate.Automapping.AutoMapping<Employee> mapping)
{
mapping.HasMany(x => x.Subordinates).Cascade.None();
mapping.HasOne(x => x.SupervisorBackRef).Cascade.None();
}
}