Как сохранить увеличенное значение в 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 для обновления, подобного этому.