Dapper自定义SqlMapper.TypeHandler解析方法未调用

问题描述 投票:5回答:1

我创建了一个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 asp.net-core-2.2
1个回答
0
投票

一年过去了,现在Dapper 2.0.30中没有此错误。我在Postgres的jsonb列上检查了它。

© www.soinside.com 2019 - 2024. All rights reserved.