После долгих царапин на голове ответ стал очевидным.Сначала я сбросил search_path в базе данных.Это не помогло.Затем я перестроил POCO с помощью PetaPoco и быстро обнаружил, что не только новая таблица «testme» не была создана, но и не были какие-либо POCO.Поэтому, проверяя, файл Database.tt в PetaPoco показал, что он имеет неправильное имя ConnectionStringName.Изменение ConnectionStringName на «phoenixconnection» позволило построить POCO, но снова не удалось найти таблицу «testme».
Затем ошибка стала очевидной, как указано выше, как «phoenixconnection», так и «localconnection»были указаны в том же порту.Из предыдущей разработки у меня был PostgreSQL v10.1, работающий на том же порту, что и более новый PostgreSQL v11.1.Очевидно, первый PostgreSQL v10.1 получал соединение (а не более новый PostgreSQL v11.1).
Переход на services (services.msc) и завершение работы v10.1 и запуск Database.TT теперь далиошибка: System.InvalidOperationException: последовательность содержит более одного совпадающего элемента
Очевидно, что в версии 10.1 (которую я использовал для разработки) была только ОДНА схема, ноv11.1 имеет несколько схем.Я понимаю, что сообщение об ошибке означает, что PetaPoco просматривал несколько таблиц с одним и тем же именем таблицы, т. Е. Не различал схемы.
Итак, теперь проблема решена.
- Исправьте порты!Старая версия PostgreSQL с одной схемой v10.1 хранится на порту: 5432. Новая версия PostgreSQL с несколькими схемами хранится на порту 5433. Версия 1010 будет использоваться для POCO.
- Исправьте строки подключения вApp.config для WCF, чтобы во время выполнения WCF использовал более новую версию v11.1.После генерации оставьте POCO'ы в одиночку и сослаться на них в файле WCF.
Очевидно, PetaPoco может работать только с одной схемой при генерации своих POCO, но во время выполнения считывает строки подключения из приложения..Config WCF для выполнения его запросов и т. Д. (Таким образом, в файле App.config, где находится Database.TT, укажите PetaPoco на базу данных «development», имеющую только одну схему, но в среде WCF укажите строку подключения нановая база данных с несколькими схемами. SearchPath строки подключения IS соблюдается при запуске через Npgsql).
Было бы хорошо, если бы PetaPoco мог генерировать POCO, специфичные для схемы в несколькихсхема среды, но в настоящий момент, я думаю, что это не может: (
Добавление Примечание. Оказывается, что данный экземпляр PostgreSQL может иметь несколько Базы данных Таким образом, если строка подключения для Npgsql специфична для базы данных разработки --ie, базы данных только с одной схемой - тогдаВ процессе разработки PetaPoco отлично работает над созданием POCO.Эти POCO могут затем напрямую использоваться в проекте службы WCF и загружаться на веб-сайт IIS.Затем файлы App.config веб-сайта могут быть направлены на использование базы данных времени выполнения (снова в строке подключения) для развернутой базы данных.Все работает хорошо!:)