C# 软纤维酸盐
我想在我的db表上做一个软删除…我已经应用了下面的语句(如这里和很多问题中所述)。 Fattura是我想要应用逻辑删除的表(表上没有触发器) Fattura.hbm.xmlC# 软纤维酸盐,c#,nhibernate,nhibernate-3,soft-delete,C#,Nhibernate,Nhibernate 3,Soft Delete,我想在我的db表上做一个软删除…我已经应用了下面的语句(如这里和很多问题中所述)。 Fattura是我想要应用逻辑删除的表(表上没有触发器) Fattura.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Paggentola.Gestionale.DL.Model" namespace="Paggen
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Paggentola.Gestionale.DL.Model" namespace="Paggentola.Gestionale.DL.Model">
<class name="Fattura" table="Fattura" where="Cancellato=0">
<id name="Id_Fattura" column="Id_Fattura">
<generator class="native" />
</id>
<property name="Tipo_Fattura" column="Tipo_Fattura" />
<property name="Cancellato" column="Cancellato" />
</class>
</hibernate-mapping>
删除事件侦听器
public class MyDeleteEventListener : DefaultDeleteEventListener
{
protected override void DeleteEntity(IEventSource session, object entity,
EntityEntry entityEntry, bool isCascadeDeleteEnabled,
IEntityPersister persister, ISet transientEntities)
{
if (entity is ISoftDeletable)
{
var e = (ISoftDeletable)entity;
e.Cancellato = 1;
CascadeBeforeDelete(session, persister, entity, entityEntry, transientEntities);
CascadeAfterDelete(session, persister, entity, transientEntities);
}
else
{
base.DeleteEntity(session, entity, entityEntry, isCascadeDeleteEnabled,
persister, transientEntities);
}
}
}
以这种方式配置
configuration.SetListener(ListenerType.Delete, new MyDeleteEventListener());
事件将触发,但未设置CancelATO=1。
这是我的命令
public void Delete(T entity)
{
NHibernateSession.Delete(entity);
NHibernateSession.Flush();
}
我的映射文件中有一个错误。财产
<property name="Cancellato" column="Cancellato" />
在我的数据库列中没有相同的名称。这样就不会更新。我只是不明白为什么在运行时没有错误
我已经设置了相同的名称,工作正常。您需要进行
事务。打开和提交而不执行提交
不会将任何内容保存到您的数据库中,因为硬删除工作正常…nhibernate中的硬删除得到了内置事务,或者正如我们所说的那样。您尝试过删除方法中的事务吗?当然!不工作…(p.s.冲洗必须具有相同的效果…)
<property name="Cancellato" column="Cancellato" />