Entity Framework работает в консольной программе, но не в Azure. - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь построить архитектуру решения, в которой я ссылаюсь на проект .net, который содержит весь код, который мне нужен для структуры сущностей ORM, которая взаимодействует с базой данных postgres с помощью поставщика Npgsql.

Ссылка на такой проект и создание запроса работает в консольном приложении, но не в проекте функции Azure.

Вот ссылка на решение , содержащее все необходимое для воспроизведения этой ошибки. в ConsoleApp1 используется ссылка на eftest, которая завершится без ошибок.

Проект с именем FunctionApp3 является ошибочным случаем. Совершенно новый проект функции Azure, нацеленный на .net framework 4.71, ссылающийся на проект eftest и запрашивающий его. Если вы попробуете проект, вы получите эту ошибку .

Конечно, когда вы на самом деле устанавливаете пакет Npgsql 4.0.2, которого он так отчаянно жаждет, меняется на эту ошибку.

Я думал, что это проблема с перенаправлением привязки. поэтому я добавил app.config, похожий на тот, который существует в консольном приложении. Оказывается, что функции Azure не могут использовать файлы app.config , поэтому я не могу установить перенаправление привязки или атрибут providerName в строке подключения. Насколько мне известно, keyword port not supported вызвано тем, что в строке подключения не указано значение providerName.

Вот журнал полной перестройки проекта функции Azure.

Вопрос: Как заставить этот проект структуры сущностей работать с проектом функции Azure?

1 Ответ

0 голосов
/ 21 ноября 2018

@ grek40 предоставил решение для второй ошибки, поместив ProviderName в качестве свойства в settings.json.

обновлены settings.json

{
  "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "",
        "AzureWebJobsDashboard": ""

    },
    "ConnectionStrings": {
        "DefaultConnection": {
            "ConnectionString": "Server=localhost;Port=5432;Database=ef-azf-ca-testdatabase;User Id=postgres;Password=postgres;Pooling=true;Max Auto Prepare=10;Auto Prepare Min Usages=1;"
            "ProviderName":  "Npgsql"
        }
    }
}

Что касается первой проблемы, я понятия не имею, почему я не могу использовать Npgsql версии 4.0.3, но это не имеет значения, поскольку я могу просто использовать 4.0.2. Помоги нам, Рожи, ты наша единственная надежда.

...