Я создал 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
Код достаточно прост. Я получаю не исключения. Есть идеи?