NHibernate缓存问题

NHibernate缓存问题,nhibernate,Nhibernate,我有一个服务,我正试图转移到NHibernate 服务上有一个Get方法,通过视图上的cancel按钮调用该方法。第一次调用Get方法时,第一次取消更改时,实际执行取消操作,并且返回值 第二次取消时,它只是忽略取消并保留新值 private ISession _session; private ISession GetSession() { return _session ?? (_session = _sessionFactory.OpenSessio

我有一个服务,我正试图转移到NHibernate

服务上有一个Get方法,通过视图上的cancel按钮调用该方法。第一次调用Get方法时,第一次取消更改时,实际执行取消操作,并且返回值

第二次取消时,它只是忽略取消并保留新值

    private ISession _session;

    private ISession GetSession()
    {
        return _session ?? (_session = _sessionFactory.OpenSession());
    }

    public MappingCollection Get(string id)
    {
        var session = GetSession();
        var mappingCollection = session.Get<MappingCollection>(id);
        return mappingCollection;
    }
但是,如果我更改Getstring id以包含刷新

    public MappingCollection Get(string id)
    {
        var session = GetSession();
        var mappingCollection = session.Get<MappingCollection>(id);
        session.Refresh(mappingCollection);
        return mappingCollection;
    }
一切都正常-但使用NHibernate探查器,它会在第一次操作中调用select两次。。。我知道我可以添加一个bool来看看它是否运行过,但我希望有更好的方法


有人能帮忙吗?谢谢

您是否在每次取消尝试时都会杀死您的web代理?这听起来像是每个请求问题一个会话


第二个版本应该运行两次。首先,你得到了物品。然后刷新项目。这将调用数据存储以检查更改。

否,我将保持会话的活动状态以进行延迟加载。这是第一个运行两次的操作,因为它将其加载到缓存并刷新。