При выборке данных получаю некорректное значение

Рейтинг: 0Ответов: 0Опубликовано: 26.03.2023

Использую 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);

Ответы

Ответов пока нет.