为什么不叫Nhibernate Interceptor?

时间:2010-08-25 08:13:55

标签: c# .net nhibernate

我使用了NHibernate 2.1.2,FluentNhibernate 1.1和配置In Memory的SQLite(用于单元测试)。

拦截器的目的是使创建条件返回代理对象。我想我已经正确地在配置中注册了拦截器,但是创建条件只返回裸对象而不是代理对象。我试图在拦截器Instantiate方法上设置一个断点,但断点没有被击中。

所以我的问题是,我怎么知道我的拦截器是否已正确设置?我可以使用日志调试吗?

我在Visual Studio单元测试中使用配置时遇到问题。

1 个答案:

答案 0 :(得分:2)

好吧,我因为琐碎的问题花了12个小时。

拦截器不适用于 ISession.Get

这是我误解的原因

public UserModel Save(UserModel user)
{
    UserModel result = null;
    using (ITransaction transaction = session.BeginTransaction())
    {
        var id = session.Save(user);
        //here i expect a proxied UserModel will returned
        result = session.Get<UserModel>(id);
        transaction.Commit();
    }
    return result;
}

我意识到我的拦截器工作正常后我决定离开它并开始为使用Criteria API的GetUsers方法编写单元测试。

如果您对NHibernate拦截器感兴趣,我发现它here