Я пытаюсь использовать pgProvider в рамках перехода к Postgresql, чтобы получить членство работать в веб-приложение .NET MVC4, однако я продолжаю сталкиваться следующее сообщение об ошибке:Почему pgProvider выбрасывает исключение?
ERROR: 42P01: relation "versions" does not exist
До сих пор я настроил web.config, как было предложено, и подтвердил, что поставщик успешно подключается к базе данных с помощью .NET Reflector. Я сузил проблему до функции ValidateVersion()
в файле DDLManager.cs в pgProvider.
По существу, это pgProvider пытается проверить, должно ли оно автоматически создавать таблицы членства (проверяя, существуют ли таблицы уже). Однако способ, которым он делает это, запустив этот запрос:
select count(*) from pg_tables where schemaname = 'public' and tablename = 'versions';
А затем пытается разобрать результат в междунар, возвращая логическое значение из int.TryParse()
в качестве индикатора существует ли таблица или нет. Но поскольку возвращаемый результат равен 0 вместо NULL (я предполагаю, что pgProvider ожидает, если нет таблицы), он всегда вычисляет значение true ... потому что, очевидно, 0 является int. Поэтому он считает, что все таблицы существуют и пытается выполнить запрос в таблице «версий», которая не была создана.
Так что я не уверен, что это проблема с моей базой данных, возвращающей 0, когда он должен вернуть NULL, или если это проблема с pgProvider, на самом деле не глядя на то, что возвращается. Куда мне идти дальше?