При выборке данных получаю некорректное значение
Использую Dapper 2.0.123, Npgsql 7.0.2.
Создал UserModel
:
[Table("users")]
public class UserModel
{
[Column("user_id")]
public long UserId { get; set; }
[Column("username")]
public string Username { get; set; }
[Column("firstname")]
public string? Firstname { get; set; }
[Column("lastname")]
public string? Lastname { get; set; }
[Column("join_date")]
public DateTime JoinDate { get; set; }
}
Создал UserRepository
:
private IDbConnection db = new NpgsqlConnection(AppConnection.ConnectionString);
public async Task Add(UserModel user)
{
try
{
string sqlCommand = $"INSERT INTO users (user_id, username, firstname, lastname, join_date) VALUES (@userId, @username, @firstname, @lastname, @joinDate) ON CONFLICT (user_id) DO NOTHING";
var queryArguments = new
{
userId = user.UserId,
username = user.Username,
firstname = user.Firstname,
lastname = user.Lastname,
joinDate = user.JoinDate,
};
await db.ExecuteAsync(sqlCommand, queryArguments);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex);
}
}
public List<UserModel> GetAll()
{
return db.Query<UserModel>("SELECT * FROM users ORDER BY join_date ASC", commandType: CommandType.Text).ToList();
}
Создал UserService
:
public class UserService
{
private UserRepository repository;
public UserService(UserRepository _repository)
{
repository = _repository;
}
public async Task AddUser(long userId, string username, string firstname, string lastname)
{
UserModel user = new();
user.UserId = userId;
user.Username = username;
user.Firstname = firstname;
user.Lastname = lastname;
user.JoinDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
await repository.Add(user);
}
public List<UserModel> GetUsers()
{
return repository.GetAll();
}
При переборе списка значений user.UserId = 0
, хотя в бд добавляются корректные id
, а user.Username
(и др.) выводятся корректно. Что упускаю?
List<UserModel> users = userService.GetUsers();
foreach (var user in users)
{
try
{
await context.Client.SendTextMessageAsync(
user.UserId,
text: $"😎 Доброго времени суток, {user.Username}! \n\n" + context.Update.Message.Text[9..],
cancellationToken: cancellationToken);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex);
}
}
Таблица users
:
create table public.users
(
user_id bigint not null,
username varchar(100),
firstname varchar(100),
lastname varchar(100),
join_date date
);
alter table public.users
owner to postgres;
create unique index users_table_user_id_uindex
on public.users(user_id);
Источник: Stack Overflow на русском