NHibernate не удаляет сущность - PullRequest
1 голос
/ 17 января 2011

В части TestFixtureTearDown теста NUnit я пытаюсь удалить некоторые тестовые объекты, созданные в части TestFixtureSetUp.Я использую следующий код

        sessionFactory = NHibernateHelper.CreateSessionFactory(cssc["DefaultTestConnectionString"].ConnectionString);
        uow = new NHibernateUnitOfWork(sessionFactory);

        var g = reposGebruiker.GetByName(gebruiker.GebruikerNaam);
        reposGebruiker.Delete(g);

        var k = reposKlant.GetByName(klant.Naam);
        reposKlant.Delete(k);

        // Commit changes to persistant storage
        uow.Commit();

Однако после фиксации эти две сущности все еще были в базе данных.После поиска я наткнулся на эту страницу на SO и поэтому добавил:

        uow.Session.Flush();

Однако, все еще сущности остаются в БД.У кого-нибудь есть идея, почему это так?

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Я никогда не использовал используемый вами класс UoW, но мои проекты реализованы с использованием ISession.BeginTransaction и ISession.Transaction.Commit в виде помощника:

public void CreateContext (логика действия) {

  ISession.BeginTransaction();
  logic();
  ISession.Transaction.Commit(); 

}

А потом:

CreateContext (() => Session.Delete (SomeObject));

Это должно работать.

Я хочу упомянуть, что это пример, и вы хотели бы сделать некоторые абстракции.

1 голос
/ 17 января 2011

Как создаются репозитории?Для успешного удаления объекты должны быть загружены в том же UoW (ISession), в котором выдается команда Delete.Метод Delete делает объекты непостоянными и помечает их для удаления.

...