Csharp/C#教程:软删除Nhibernate分享


软删除Nhibernate

我想在我的数据库表上进行软删除…我已经应用了以下语句(如此处所述https://nhibernate.info/blog/2008/09/06/soft-deletes.html并且在很多问题中在SO)。 Fattura是我的表,我想应用逻辑删除(没有触发器)

Fattura.hbm.xml

          

Fattura.cs – 模型对象

 using System; namespace ModelObject { public class Fattura : ISoftDeletable { public virtual int Id_Fattura { get; set; } public virtual Int16 Id_Tipo_Fattura { get; set; } public virtual Int16 Cancellato { get; set; } } } 

删除事件监听器

  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()); 

事件触发但它没有设置Cancellato = 1。 这是我的DeleteCommand

  public void Delete(T entity) { NHibernateSession.Delete(entity); NHibernateSession.Flush(); } 

我的映射文件有错误。 属性

   

在我的数据库列中没有相同的名称。 这样它就不会更新了。 我只是不明白为什么在运行时没有错误…

我设置了相同的名称,工作正常。

上述就是C#学习教程:软删除Nhibernate分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/953986.html

(0)
上一篇 2021年11月19日
下一篇 2021年11月19日

精彩推荐