Проблема с кэшированием в NHibernate - PullRequest
0 голосов
/ 30 ноября 2009

У меня есть служба, с которой я пытаюсь перейти на 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 (идентификатор строки), чтобы включить обновление ...

    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 голосов
/ 30 ноября 2009

Вы убиваете свой веб-прокси при каждой попытке отмены? Это звучит как проблема "один сеанс на запрос".

И должно иметь смысл, что вторая версия запускается дважды. Сначала вы получите предмет. Затем вы обновляете предмет. Это вызовет хранилище данных для проверки изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...