Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dapper是否支持存储过程参数的自定义类型?_C#_Dapper - Fatal编程技术网

C# Dapper是否支持存储过程参数的自定义类型?

C# Dapper是否支持存储过程参数的自定义类型?,c#,dapper,C#,Dapper,如果我有一个自定义类型,一个日期类,那么在设置存储过程参数时,Dapper是否可以自动处理类型转换?目前,我必须这样做: public void Execute(Date value) { var parameters = new DynamicParameters(); parameters.Add("MyDate", Date.ToDateTime(), DbType.Date); Execute("dbo.InsertDate", parameters, Comma

如果我有一个自定义类型,一个日期类,那么在设置存储过程参数时,Dapper是否可以自动处理类型转换?目前,我必须这样做:

public void Execute(Date value)
{
    var parameters = new DynamicParameters();
    parameters.Add("MyDate", Date.ToDateTime(), DbType.Date);
    Execute("dbo.InsertDate", parameters, CommandType.StoredProcedure);
}
我真的必须把它转换成一种更受认可的系统类型吗?我希望Dapper的TypeHandler代码能够工作,但它似乎忽略了它,所以我假设它只是用于在检索数据时处理投影,而不是用于参数化命令


这是在.NET Framework 4.7.2上使用Dapper 1.60.0是的,Dapper支持对存储过程参数的类型进行自定义处理。下面是一个转换自定义日期类的工作示例:

下面是处理给定给SqlMapper.AddTypeHandler的转换的类。对于设置存储过程参数,相关的是SetValue

public class DateHandler : ITypeHandler
{
    public object Parse(Type destinationType, object value)
    {
        return new Date() { MyDate = (DateTime)value };
    }

    public void SetValue(IDbDataParameter parameter, object value)
    {
        parameter.DbType = DbType.Date;
        parameter.Value = ((Date)value).MyDate;
    }
}
为了完整性,这是需要自定义处理的自定义类

public class Date
{
    public DateTime MyDate { get; set; }
}

请显示TypeHandler代码。嗯,看起来我已经得到了所有这些,除了在设置parameter.value时将值转换为最新值
public class Date
{
    public DateTime MyDate { get; set; }
}