问题标签 [iinterceptor]
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.
database - NHibernate IInterceptor 实现(将属性添加到原始域类没有的数据库表)
当通过 NHibernate 更新/插入实体而不扩展具有特殊属性的域类时,如何设置一些特殊的列值?
例如:在我的情况下,我想获取对象,并在更新/插入数据库之前使用 IInterceptor 向该对象添加一些附加信息(如用户 ID 或计算机名称)。换句话说,我想在数据库表中添加几列而不在原始对象的类中指定新属性。在这种情况下,我是否必须配置/更改/添加到我的Object.hbm.xml
或 App.config 中?
问题是我无法更改我的原始对象和基类。所以我必须弄清楚是否可以在不更改原始对象的情况下向 DB 表添加信息(甚至没有从任何基类继承)
例子:
原始对象有:FirstName ,LastName,Birthday,Address properties
Customer.hbm.xml
有:
我的拦截器类有方法:
在那一刻,甚至可能在保存之前,我必须在 DB Customer 表中添加额外的 2 列(例如计算机名和用户名),propertyNames[]
并且state[]
参数从一开始就没有它们,所以应该即时完成。
MY DB Customer 表包含我上面描述的所有列。
谢谢你。
c# - Castle.Windsor 使用拦截器注册所有类型
为什么以下不拦截使用 LogAspect 对 IBusinessService 的调用?
如果我使用 Component.For 语法注册 IBusinessService 的每个实现,那么它就可以工作。
nhibernate - NHibernate 在拦截器中添加未映射的列
我正在尝试使用 NHibernate 保存映射的实体,但我对数据库的插入失败,因为基础表的列不允许空值并且未映射到我的域对象中。它没有被映射的原因是因为有问题的列支持遗留应用程序并且与我的应用程序无关 - 所以我不想用遗留属性污染我的实体。
我知道我可以在课堂上使用私有字段 - 但这对我来说仍然令人讨厌。我读过我可以使用 NHibernate 拦截器并覆盖 OnSave() 方法以在保存我的实体之前添加到新列中。事实证明这很困难,因为我不知道如何将 Nhibernate.type.IType 的实例添加到我的拦截器 OnSave 的 types 参数中。
我的实体大致如下所示:
还有我的拦截器
有人对如何正确执行此操作有任何想法吗?
target - Castle DynamicProxy2: Get the Target inside an Interceptor?
I'm using Castle DynamicProxy2 to "tack on" interfaces to retrieve fields from a dictionary. For example, given the following class:
I want to use the following interface as an interface proxy to extract the "Name" value out of the Fields dictionary:
From an interceptor, I want to get the "target" DataContainer, and return the "Name" value:
Any thoughts on how to get the underlying target
Note: this is a contrived example I'm using to establish some context around the question I have.
nhibernate - 过滤对象 OnLoad NHibernate IInterceptor
我在使用 NHibernate 加载对象时遇到问题。这些实体引用了不再存在的文件。当 NHibernate 分配这些实体的 'Path' 属性时,这些实体会尝试加载导致异常的文件。该异常导致加载事务完全回滚。
我想保持我的实体不变,以便在设置路径后继续加载文件。在我从数据库加载的情况下,我想跳过这些实体并加载我的项目的其余部分。
我正在考虑使用 IInterceptor 来完成这项工作。基本上我想在加载它们之前过滤基于文件的对象。
我想听听关于类似问题的任何想法,以及我的“解决方案”是否可行和可能。
问候,马丁
c# - 具有流畅界面的 Castle 拦截器
我试图让我编写的拦截器工作,但由于某种原因,当我请求我的组件时,它似乎没有实例化拦截器。我正在做这样的事情(如果这不能完全编译,请原谅我,但你应该明白):
我已经在拦截器的构造函数中放置了断点,它似乎根本没有实例化它。
过去我使用 XML 配置注册了我的拦截器,但我热衷于使用流畅的界面。
任何帮助将不胜感激!
generics - 添加拦截器后 Windsor 调用“泛化”方法的问题
我有一个运行良好的应用程序,它使用 Windsor for IoC。我想记录对 Windsor 实例化的组件的所有调用的方法调用、参数和执行时间,所以我实现了一个实现 IInterceptor 的 LoggingInterceptor,它包含:
现在,以前运行良好的操作正在抛出带有以下消息的 VerificationExceptions:
方法 Repositories.RepositoryBase.GetAll:类型参数“ET”违反了类型参数“ET”的约束。
该方法的签名是:
(其中 EntityBase2 和 IEntity2 来自 LLBLGenPro)
该方法的调用者如下:
(其中 GetRepository<>() 只是 ServiceLocator 的包装)
如果我从城堡配置中注释掉拦截器,一切都会再次正常工作。
为什么现在会发生这种情况,是否有修复程序以便我可以使用我的日志拦截器?
谢谢
nhibernate - 通过 Windsor 注册自定义 NHibernate 拦截器
我创建了一个简单的 AuditInterceptor: EmptyInterceptor 现在我想知道如何使用 Windsor 在我的应用程序中注册这个新的拦截器?
nhibernate - 在 NHibernate IInterceptor 中保存对象
我在我的域模型中为 ILoggable 对象设置了一个 IInterceptor。在 OnFlushDirty 事件中,我正在尝试保存日志(审核)。但是在这样做的时候,我的代码进入了一个无限循环。
_logrepository.Save(log) 调用 OnFlushDirty 即使 log 不是 ILoggable 对象(这是因为实体仍然是前一个对象)
有没有办法在 IInterceptor 中使用 .Save(不打开另一个会话),或者如何在 IInterceptor 中将日志插入数据库?