NHibernate缓存问题

时间:2009-11-30 17:26:31

标签: nhibernate

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

通过视图上的取消按钮调用服务的Get方法。第一次调用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;
    }

但是,如果我更改Get(字符串ID)以包含刷新...

    public MappingCollection Get(string id)
    {
        var session = GetSession();
        var mappingCollection = session.Get<MappingCollection>(id);
        session.Refresh(mappingCollection);
        return mappingCollection;
    }

一切正常 - 但是看看NHibernate Profiler它会在第一次操作时调用select两次......我知道我可以添加一个bool来查看它是否已经运行,但我希望有更好的方法!

有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:0)

每次取消尝试都会杀死您的网络代理吗?这听起来像是每个请求一个会话的问题。

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