Nhibernate envers 修改后的列不能正确跟踪从集合中删除
Nhibernate envers modified columns doesn't correctly track removals from collection
我有一个看起来像这样的模型:
class Case
{
public virtual ISet<CaseToCaseTag> CaseTags { get; set; }
public virtual DateTime LastModified { get; set; }
}
class CaseToCaseTag
{
public virtual Case Left { get; set; }
}
在审核与 envers 的这种关系时,我 运行 在从集合中删除值时遇到修改后的 属性 跟踪问题。
如果从集合中删除值时我在案例实体中更改的 只有 是 "set-removal" 那么 envers 正确跟踪 CaseTags
属性在修订版中修改。但是,如果我还更改任何其他 属性,例如 LastModified
属性,我不会正确设置 CaseTags_MOD 标志。
我已经追踪到(我认为)这个 AuditProcess.AddWorkUnit
方法。
当我只从集合中移除时,只添加了一个 WorkUnit
(一个 CollectionChangeWorkUnit
),但是当我还更改另一个 属性、另一个 WorkUnit
(一个 ModWorkUnit
) 也被添加。
然后似乎发生的事情是 CollectionChangeWorkUnit
被丢弃,取而代之的是 ModWorkUnit
,而 ModWorkUnit
又不会接收对集合的更改。
我想做的是不受支持的,还是有解决办法?
听起来像个错误。请创建一个包含最少映射的拉取请求以重现该问题。
我有一个看起来像这样的模型:
class Case
{
public virtual ISet<CaseToCaseTag> CaseTags { get; set; }
public virtual DateTime LastModified { get; set; }
}
class CaseToCaseTag
{
public virtual Case Left { get; set; }
}
在审核与 envers 的这种关系时,我 运行 在从集合中删除值时遇到修改后的 属性 跟踪问题。
如果从集合中删除值时我在案例实体中更改的 只有 是 "set-removal" 那么 envers 正确跟踪 CaseTags
属性在修订版中修改。但是,如果我还更改任何其他 属性,例如 LastModified
属性,我不会正确设置 CaseTags_MOD 标志。
我已经追踪到(我认为)这个 AuditProcess.AddWorkUnit
方法。
当我只从集合中移除时,只添加了一个 WorkUnit
(一个 CollectionChangeWorkUnit
),但是当我还更改另一个 属性、另一个 WorkUnit
(一个 ModWorkUnit
) 也被添加。
然后似乎发生的事情是 CollectionChangeWorkUnit
被丢弃,取而代之的是 ModWorkUnit
,而 ModWorkUnit
又不会接收对集合的更改。
我想做的是不受支持的,还是有解决办法?
听起来像个错误。请创建一个包含最少映射的拉取请求以重现该问题。