Использование NLog для входа в базу данных MySQL с помощью поставщика Pomelo в ASP .Веб-API Net Core 5

#.net-core #nlog #.net-5 #mysql-connector #pomelo-entityframeworkcore-mysql

Вопрос:

У меня есть АСПИД .Net Core Web API использует NLog, и я пытаюсь настроить его для входа в базу данных MySQL. Я использую Pomelo в своем приложении для общения с MySQL.

В файле nlog.config у меня есть:

     <target name="db"
        xsi:type="Database"
        dbProvider="Pomelo.EntityFrameworkCore.MySql, Pomelo.EntityFrameworkCore"
        connectionString="blah blah blah"
        commandType="StoredProcedure"
        commandText="`InsertLog`"
    >
        <parameter name="machineName"    layout="${machinename}" />
        <parameter name="logged"         layout="${date}" />
        <parameter name="logLevel"       layout="${level}" />
        <parameter name="message"        layout="${message}" />
        <parameter name="logger"         layout="${logger}" />
        <parameter name="properties"     layout="${all-event-properties:separator=|}" />
        <parameter name="callsite"       layout="${callsite:fileName:true}" />
        <parameter name="exception"      layout="${exception:tostring}" />
        <parameter name="callsiteLineNumber"      layout="${callsite-linenumber}" />
        <parameter name="stackTrace"      layout="${stacktrace}" />
    </target>
 

Однако это выдает ошибку «Не удалось загрузить файл или сборку» Pomelo.EntityFrameworkCore»

У меня неправильный поставщик DbProvider? Разве Nlog не работает с Pomelo?

Комментарии:

1. Вы получаете исключение, потому Pomelo.EntityFrameworkCore что сборки нет (было бы Pomelo.EntityFrameworkCore.MySql ). Но AFAIK, в NLog нет поддержки для ведения отчетов непосредственно с использованием ядра EF. Поэтому вы не можете использовать Pomelo, потому что это основной поставщик EF. Тем не менее, вы должны иметь возможность использовать MySqlConnector (ADO.NET провайдер, которого Pomelo использует под капотом), если вы правильно настроили свою хранимую процедуру, параметры. Например, вы бы использовали dbProvider="MySqlConnector.MySqlConnection, MySqlConnector" в своей конфигурации.

Ответ №1:

Я последовал комментарию lauxjpn, и это сработало. Спасибо lauxjpn!