标签: iinterceptor

NHibernate IInterceptor实现(向原始域类没有的DB表添加属性)

当通过NHibernate更新/插入实体而不扩展具有特殊属性的域类时,如何设置一些特殊的列值?

例如:在我的情况下,我希望获得对象,并在更新/插入db之前,通过使用IInterceptor向该对象添加一些其他信息(如用户ID或计算机名称).换句话说,我想在DB Table中添加几列而不在原始对象的类中指定新属性.Object.hbm.xml在这种情况下,我是否必须配置/更改/添加到我的或App.config?

问题是我无法更改我的原始对象和基类.所以我必须弄清楚是否有可能在不更改原始对象的情况下向DB表添加信息(甚至没有从任何基类继承)

例:

原始对象有: FirstName ,LastName,Birthday,Address properties

Customer.hbm.xml 具有:

<property name="FirstName" column="FirstName" type="string" not-null="true" length="64" />
<property name="LastName" column="LastName" type="string" not-null="true" length="64" />
<property name="Birthday" column="Birthday" type="DateTime" not-null="true"  />
<property name="Address" column="Address" type="string" not-null="true"  />
Run Code Online (Sandbox Code Playgroud)

我的Interceptor类有方法:

public bool OnSave(object entity, object id, object[] state, string[] propertyNames, NHibernate.Type.IType[] types)
Run Code Online (Sandbox Code Playgroud)

在那一刻甚至可能在保存之前我必须在DB Customer表中添加额外的2列(例如计算机名和用户名),propertyNames[]并且state[]参数从一开始就没有它们,因此应该在运行中完成.

MY DB Customer表包含我上面描述的所有列.

谢谢.

database nhibernate iinterceptor

5
推荐指数
1
解决办法
916
查看次数

使用Castle Fluent界面注册拦截器

我试图通过拦截器实现nhibernate事务处理,并无法弄清楚如何通过流畅的机制注册接口.

我看到了

Component.For<ServicesInterceptor>().Interceptors
Run Code Online (Sandbox Code Playgroud)

但不知道如何使用它.有人可以帮我吗?这个例子看起来有点复杂.

c# castle-windsor fluent-interface iinterceptor

2
推荐指数
1
解决办法
2109
查看次数

城堡拦截器与流畅的接口

我正在尝试获得一个我写的工作拦截器,但由于某种原因,当我请求我的组件时它似乎并没有实例化拦截器.我正在做这样的事情(原谅我,如果这不完全编译,但你应该得到这个想法):

container.Register(
    Component.For<MyInterceptor>().LifeStyle.Transient,
    AllTypes.Pick().FromAssembly(...).If(t => typeof(IView).IsAssignableFrom(t)).
    Configure(c => c.LifeStyle.Is(LifestyleType.Transient).Named(...).
                   Interceptors(new InterceptorReference(typeof(MyInterceptor)).
    WithService.FromInterface(typeof(IView)));
Run Code Online (Sandbox Code Playgroud)

我在断路器的构造函数中放置了断点,它似乎根本没有实例化它.

在过去,我使用XML配置注册了我的拦截器,但我很想使用流畅的界面.

任何帮助将不胜感激!

c# castle-windsor fluent-interface iinterceptor

1
推荐指数
1
解决办法
3018
查看次数