我有一个名为 AdviceId 的类,它支持与字符串之间的隐式转换。我还重写了类上的 ToString() 方法,以确保每当调用此方法时都返回正确的字符串输出。
我的应用程序使用 Dapper 保存数据。以前,AdviceIds 是作为字符串保存和检索的,但我现在尝试使用特定类型。然而,这失败了。是否有一个特殊的技巧来告诉 Dapper 在字符串和我的 AdviceId 类型之间使用隐式转换?
UPDATE我已经成功地让 Dapper 通过向 SqlMapper 添加类型映射来插入 AdviceId 的实例作为字符串
SqlMapper.AddTypeMap(typeof(AdviceId), DbType.String);
并通过使 AdviceId 实现 IConvertible。但是,我没有运气将字符串从数据库转换回 AdviceId 的实例。
看起来马克补充道2014年6月 https://github.com/StackExchange/dapper-dot-net/commit/e26ee0abe5bdff561ff59fded87cabb9f5d983a1你可以打电话AddTypeHandler
与你自己的实现SqlMapper.TypeHandler<AdviceId>
我通过发现这个博客 https://andydote.co.uk/2014/07/22/configuring-dapper-to-work-with-custom-types/但马克也写了博客here http://blog.marcgravell.com/2014/07/dapper-gets-type-handlers-and-learns.html.
public class AdviceIdTypeHandler : SqlMapper.TypeHandler<AdviceId>
{
public override void SetValue(IDbDataParameter parameter, AdviceId value)
{
parameter.Value = value.ToString();
}
public override AdviceId Parse(object value)
{
return new AdviceId((string)value);
}
}
SqlMapper.AddTypeHandler(new AdviceIdTypeHandler());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)