NHibernate / Npgsql выдает исключение во время CreateSchema при отладке UnitTest - PullRequest
4 голосов
/ 28 апреля 2011

У меня есть два проекта на C #, Model и ModelTest. Модель состоит из объектов ActiveRecord (обертка вокруг Hibernate). В ModelTest я создал простой модульный тест:

[TestClass]
public class UnitTest1
{
    [TestInitialize]
    public void Init()
    {
        Model.Init();
        Model.CreateSchema();
    }

    [TestMethod]
    public void TestMethod1()
    {
    }
}

Model.Init () регистрирует все типы сборки Model с помощью ActiveRecord. Model.CreateSchema () оборачивает ActiveRecordStarter.CreateSchema (), который вызывает CreateSchema () NHibernate.

Этот код работает нормально, если я запускаю модульное тестирование, но не работает, если я "отлаживаю" модульный тест. В режиме отладки в CreateSchema () возникает исключение:

NpgsqlException: 'ERROR: 42P01: table "user" does not exist'

Похоже, что исключение возникает во время вызова SQL "пользовательский каскад удаленной таблицы", который, очевидно, завершается ошибкой, если база данных пуста до запуска теста. Я предполагаю, что падение отправляется всегда перед созданием новой таблицы.

В режиме отладки Npgsql ведет себя по-разному в зависимости от результата запроса на удаление?

1 Ответ

1 голос
/ 30 июля 2011

У меня была та же проблема, что и у Tarnschaf - SchemaUpdate.Create(...) завершится с ошибкой, и sql-нарушитель был drop table "tablename" cascade, что привело к той же ошибке "таблица не существует", упомянутой выше.

Оказывается, в одном из проектов была ссылка на сборку, связанную с Nhibernate, которая больше не находилась в том же месте. Я не уверен, почему это не обнаружилось, когда решение было очищено и восстановлено. Удаление всех ссылок из проекта и их повторное добавление решили проблему (для меня).

Просто опубликовать это на случай, если это поможет кому-то еще в будущем. Исключение Nhibernate было менее чем полезно.

...