Nhibernate 3.x级联-正在进行更新
我有以下映射,但当我删除状态实体时,Nhibernate会对子对象执行更新,而不是删除Nhibernate 3.x级联-正在进行更新,nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我有以下映射,但当我删除状态实体时,Nhibernate会对子对象执行更新,而不是删除 public StatusMap() { Property(x => x.Date); Property(x => x.Text, map => map.Type(NHibernateUtil.StringClob)); Property(x => x.Type); ManyToOne(x => x.User, map =>
public StatusMap()
{
Property(x => x.Date);
Property(x => x.Text, map => map.Type(NHibernateUtil.StringClob));
Property(x => x.Type);
ManyToOne(x => x.User, map => map.Column("UserId"));
Bag(x => x.Comments, map => { map.Key(km => km.Column("StatusId")); }, action => action.OneToMany());
Bag(x => x.Likes, map => { map.Key(km => km.Column("StatusId")); map.Cascade(Cascade.DeleteOrphans); }, action => action.OneToMany());
}
public StatusLikeMap()
{
ManyToOne(x => x.User, map => map.Column("UserId"));
ManyToOne(x => x.Status, map => { map.Column("StatusId"); });
Property(x => x.Date);
}
删除(状态)将导致以下SQL:
UPDATE
CommentStatus
SET
StatusId = null
WHERE
StatusId = @p0;
@p0 = ce350d55-e476-4874-9e95-341cad9342e2 [Type: Guid (0)]
UPDATE
StatusLike
SET
StatusId = null
WHERE
StatusId = @p0;
@p0 = ce350d55-e476-4874-9e95-341cad9342e2 [Type: Guid (0)]
DELETE
FROM
Status
WHERE
Id = @p0;
@p0 = ce350d55-e476-4874-9e95-341cad9342e2 [Type: Guid (0)]
有什么想法吗??请帮帮我
编辑:
我做了下面的更改,排除工作正常,但这样,触发delete命令的是数据库
如何使nhibernate执行删除而不是数据库
Bag(p => p.Likes, map =>
{
map.Key(k =>
{
k.Column("StatusId");
k.OnDelete(OnDeleteAction.Cascade);
});
map.Cascade(Cascade.DeleteOrphans);
map.Inverse(true);
}, ce => ce.OneToMany());
Cascade.deleteOlivers只表示删除孤立项。这并不意味着当父对象被删除时,子对象也会被删除 您还需要级联“删除”或“全部”:
Cascade.deleteOlivers只表示删除孤立项。这并不意味着当父对象被删除时,子对象也会被删除 您还需要级联“删除”或“全部”:
map.Cascade(Cascade.All | Cascade.DeleteOrphans)