Dapper пользовательский метод SqlMapper.TypeHandler Parse не вызывается - PullRequest
0 голосов
/ 21 января 2019

Я создал SqlMapper.TypeHandler для сопоставления объекта Customer с классом CreditAccount следующим образом:

public class CustomerTypeHandler : SqlMapper.TypeHandler<Customer>
{
    public override Customer Parse(object value)
    {
        throw new NotImplementedException();
    }
    public override void SetValue(IDbDataParameter parameter, Customer 
    value)
    {
        throw new NotImplementedException();
    }
}

public class CreditAccount
{
    public int AccountId { get; set; }
    public Customer Customer{ get; set; }
}

public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
}

Когда я подключаюсь к БД и вызываю sproc, метод CustomerTypeHandler Parse никогда не вызывается, а мой объект CreditAccount заполняется только AccountId. Объект Customer является нулевым.

Я называю это следующим образом:

    public async Task<CreditAccount> GetCreditAccount(int accountId)
    {
        var sql = "MY PROC NAME HERE";
        var parameters = new DynamicParameters();
        parameters.Add("@AccountId", accountId);

            SqlMapper.AddTypeHandler(new CustomerTypeHandler());

            using (IDbConnection connection = Connection)
            {
                connection.Open();
                var account = await connection.QueryFirstAsync<Check>(sql, parameters, commandType: CommandType.StoredProcedure);
                return account;
            }
        }
    }

Я поместил точку останова в метод Parse, и он никогда не вызывается. Соединение с базой данных работает, и я получаю AccountId.

Мое окружение; .NET Core 2.2
Dapper 1.50.5

Код достаточно прост. Я получаю не исключения. Есть идеи?

...