我创建了一个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; }
}
当我连接到数据库并调用一个存储过程时,永远不会调用CustomerTypeHandler Parse方法,并且我的CreditAccount对象只会填充AccountId。 Customer对象为null。
我这样称呼它:
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.2Dapper 1.50.5
代码很简单。我没有例外。有任何想法吗?
一年过去了,现在Dapper 2.0.30中没有此错误。我在Postgres的jsonb列上检查了它。