2
私はActiveRecordをnHibernateで使用しています。ソフト削除を実装しようとしているので、オブジェクトは実際に削除するのではなく、 "IsDeleted"とマークされています。私は明らかにカスケードオプションが必要です。ソフト削除 - リスナーを使用したActiveRecord
[assembly: AddEventListener(typeof(MyNamespace.SoftDeleteListener))] namespace MyNamespace { public class SoftDeleteListener : DefaultDeleteEventListener
{
protected override void DeleteEntity(IEventSource session, object entity, EntityEntry entityEntry, bool isCascadeDeleteEnabled,
IEntityPersister persister, ISet transientEntities)
{
if (entity is IPermanentRecord)
{
((IPermanentRecord)entity).IsDeleted = true;
this.CascadeBeforeDelete(session, persister, entity,
entityEntry, transientEntities);
this.CascadeAfterDelete(session, persister, entity, transientEntities);
}
else
{
base.DeleteEntity(session, entity, entityEntry,
isCascadeDeleteEnabled, persister, transientEntities);
}
}
}
}
マイエンティティ - "製品"
interface IPermanentRecord
{
bool IsDeleted { get; set; }
}
を実装し、問題はそれだけで、それを削除するエンティティを削除すると、リスナーが起動されません、です!
興味を持っている人には
こんにちはポール..解雇しました。私はRegistered Listenerを持っていて、それは発生します...しかし、それは更新されていません...あなたは私を助けることができますか? –