问题标签 [nhibernate-envers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
castle-windsor - 在 Envers 自定义修订侦听器中,Windsor 'Scope 缓存已被释放'
更新:我认为归结为温莎配置,有人知道我没有正确配置温莎吗?
我目前在 C# WebApi 项目中使用 Envers。Windsor 用于 IoC。我有一个自定义的 RevisionEntity ,它添加了一个 User 属性来审核更改数据的用户。
为了确保所有配置都正确,我开始在 NewRevision 方法中添加一个“这里的简单字符串”;
并且一切都按预期进行。
下一步是实现我需要获取 UserService 的完整 User 对象;
但是, DependencyResolver.GetService 抛出错误;"无法访问已释放的对象。对象名称:'范围缓存已被释放。这很可能是调用代码中的错误。 '。"
更新 我现在在https://github.com/ScottFindlater/WindsorEnversIssue创建了一个演示项目
在第一次设置解决方案时,一切都会运行良好,因为自定义 Envers RevisionListener没有执行任何依赖解析。
运行对 HomeController 执行 GET 的解决方案,它只是加载一个用户并修改另一个用户;
- 依赖解析显示为有效,因为有一个名为 DependencyResolverDoesWork 的 ActionFilter 可以成功解析 UserServices。
- Envers 显示为在填充 UserAudit 表时工作。
在客户 RevisionListener 导航到“打开”依赖解析;域 NHibernate 项目、审核文件夹、AuditRevisionListener 类、NewRevision 方法并取消注释 2 行代码。
完全重建,然后再次运行解决方案,项目将在 WindsorDependencyResolver 类中运行时异常,GetService 方法带有“<strong>无法访问已处置的对象”,单击查看详细信息操作会将此消息展开为“{”无法访问已释放的对象。\r\n对象名称: '范围缓存已被释放。这很可能是调用代码中的错误。 '."}"。
Roger 发表的评论,非常感谢,这表明将 LifeStyle 更改为 Singleton 确实有效。但是,此演示故意保持简单,并且需要使用 PerWebRequest LifeStyle,因为实际项目中的 ApplicationServices 注入了上下文相关的数据,例如用于强制安全的请求用户。
我现在很困惑,任何关于我设置错误的指示/答案都将不胜感激。此外,我知道这已在 SO 和 Envers 论坛上发布,我将更新两者的答案。
我认为归结为温莎配置,有人知道我没有正确配置温莎吗?
fluent-nhibernate - 集成 nHibernate Envers _AUD 表原始行
我正在尝试将 Envers 集成到现有的 nHibernate 数据库中。我需要各个 *_AUD 表中的默认或原始 AUD 值。即初始值,否则当用户第一次修改它时,只记录修改后的值,但用户看不到它的先前版本。
不能在不修改的情况下强制保存每个实体..
必须是一个常见的场景......让我知道是否有人实施它。
——苏库玛
c# - NHibernate Envers 修订信息的 UTC 时间戳
我正在使用 NHibernate Envers 1.6.0 并且需要对 REVINFO 中的 REVTSTMP 列使用 UTC 时间戳而不是本地时间戳。
我知道该错误已被报告(NHE-122)并已为未来的 2.0 版本修复
有什么方法可以将 DefaultRevisionInfoGenerator 更改为我自己的自定义 IRevisionInfoGenerator?
c# - ENVERS: Configure ValidityAuditStrategy using Fluent Configuration
I have tried to make ENVERS (Audit and Logging Tool for NHibernate) work with the ValidityAuditStrategy strategy, but I have'nt been successfull.
My NHibernate (fluent using envers extension method) looks like this:
I have different ways to configure the audit strategy, but the default strategy is always used. When using validity strategy, the created audit tables should have an additional columns "REVEND". However, this is not the case and I am a bit at loss at what I should try next.
Is my configuration wrong? Or is it not possible to have the sql tables created by NHibernate (I do this with the last line of the configuration).
Any help is appreciated. Thanks
c# - Envers,不在历史表中插入删除以进行孤儿删除
我们正在使用NHibernate和Envers。一切正常,但 envers 没有插入删除孤儿的审计。
我在哪里可以找到关于 nhibernate 的好的 envers 文档?是否有可能让evers删除历史表中的条目以删除孤儿?
此致!
c# - 以线程安全的方式获取服务外的当前用户会话
我的基于 ServiceStack 的应用程序使用内置的身份验证功能并在 SelfHosted 模式 ( AppHostHttpListenerLongRunningBase
) 下运行。
我正在使用 NHibernate 和 Envers 进行审计跟踪。可以为 Envers 提供可选的单例实例,该实例填充额外的修订信息。我想将当前用户的身份验证名称存储在修订信息中。
我需要在我的单例实例中访问服务代码之外的当前请求(即“当前用户会话”) 。如何使用 ServiceStack 执行此操作?如何使其线程安全?
nhibernate-envers - NHibernate Envers 未创建审计表
我试过以下代码
但是我得到了一个错误,原因是没有创建审计表,请大家帮忙
2014-02-28 00:47:03,200 调试 6 CSL:NHibernate.SQL 方法:lambda_method 行:0 - 插入到 audit.REVINFO(REVTSTMP)值(@p0);选择 SCOPE_IDENTITY();
nhibernate-envers - 每个实体一次修订
我只是从 nhibernate-envers 开始,所以请多多包涵。我正在尝试管理我有客户和订单的典型情况。
我想对每个实体进行不同的修订。
我想知道是否可以自定义环境,以便我的客户有一个渐进的修订,我的订单有另一个,每个从 1 开始。
谢谢。
c# - 更改列表元素的属性时创建修订
假设我有以下实体:
现在,我希望 Envers在 的属性发生更改Group
时创建一个修订版。如果我更改集合(顾名思义;-)本身,该属性就可以工作。Name
Item
revision_on_collection_change
是否有可能设置 Envers 以将父实体与其子元素属性的属性“连接”?
configuration - NHibernate Envers - HashedSet抛出 NotImplementedException
当我使用我的 NHibernate 配置配置 Envers 时,我的一些模型HashedSet<>
在我调用时映射了集合configuration.IntegrateWithEnvers(auditConfiguration);
我得到一个异常告诉我我需要定义一个 custom ICustomCollectionMapperFactory
。
我需要在哪里定义它?