Как сохранить увеличенное значение в Postgres с помощью C#

У меня есть приложение DNN, и мне удалось установить пользовательский модуль. Модуль в основном увеличивает и уменьшает значение в метке. Также есть кнопка с именем submit, которая отображает только положительное значение в метке, которое также является значением, которое увеличивается и уменьшается. Цель состоит только в подсчете загрузки пользователя в приложении.

Теперь вот мой код декремента: public void doDecrement(string propertyKey, UserInfo userInformation, int portalID) { int newDownloadCount = GetProfilePropertyValueAsInt(propertyKey, userInformation);; int result = 0; result = newDownloadCount - 1; userInformation.Profile.SetProfileProperty(propertyKey, result.ToString()); UserController.UpdateUser(portalID, userInformation); }

И вот мой код приращения:

public void doIncrement(string propertyKey, UserInfo userInformation, int portalID)
{
    int newDownloadCount = GetProfilePropertyValueAsInt(propertyKey, userInformation);
    int result = 0; //initialize to zero
    result = newDownloadCount + 1; //assign new value
                                   //set the profile property to RAM... no need to test because Get will default to zero 
    userInformation.Profile.SetProfileProperty(propertyKey, result.ToString());
    //call update user to write the changes to disk
    UserController.UpdateUser(portalID, userInformation);
}

Вот мой код отправки, чтобы я мог обновить значение:

public void UpdatePropertyValue(string propertyKey, UserInfo userInformation, int portalID, string txtNewVale)
{
    int newDownloadCount = 0;
    int resultValue = 0;
    int.TryParse(txtNewVale, out newDownloadCount);
    if (String.IsNullOrEmpty(txtNewVale))
    {
        newDownloadCount = resultValue;
    }
    userInformation.Profile.SetProfileProperty(propertyKey, newDownloadCount.ToString());
    UserController.UpdateUser(portalID, userInformation);
}

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

Я был бы очень признателен всем, кто мог бы помочь. Заранее спасибо.

1 ответ

Как вы, вероятно, знаете, уровень доступа к данным DNN написан для MS SQL Server. Официальной поддержки баз данных с открытым исходным кодом, таких как Postgres или mySQL, не существует. Однако вы можете написать код, который будет подключаться к внешней базе данных. Это сложнее, но можно сделать.

Поскольку у вас уже есть значение приращения, которое обновляется в профиле пользователя (который хранится в базе данных DNN SQL), вам нужно написать другой метод, который получает значение профиля пользователя и обновляет внешнюю базу данных.

Начните с загрузки драйвера данных.NET Postgres. Добавьте строку подключения в DNN web.config в качестве ключа приложения.

<appSettings>
...
    <add key="PostgresDBConn" value="Server=my-postgres-svr;Port=9090;User Id=dbuser;Password=abc123;Database=dnnExternalTables;" />
...
</appSettings>

Затем используйте следующую команду для получения строки подключения в коде вашего модуля:

string connstring = DotNetNuke.Common.Utilities.Config.GetSetting("PostgresDBConn");
NpgsqlConnection conn = new NpgsqlConnection(connstring);
conn.Open();

Затем следуйте примеру Npgsql для обновления, подобного этому.

Другие вопросы по тегам