mirror of
https://github.com/DapperLib/Dapper.git
synced 2026-10-28 12:46:54 +08:00
40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using System;
|
|
using System.Data;
|
|
|
|
namespace Dapper
|
|
{
|
|
public static partial class SqlMapper
|
|
{
|
|
/// <summary>
|
|
/// A type handler for data-types that are supported by the underlying provider, but which need
|
|
/// a well-known UdtTypeName to be specified
|
|
/// </summary>
|
|
public class UdtTypeHandler : ITypeHandler
|
|
{
|
|
private readonly string udtTypeName;
|
|
/// <summary>
|
|
/// Creates a new instance of UdtTypeHandler with the specified <see cref="UdtTypeHandler"/>.
|
|
/// </summary>
|
|
/// <param name="udtTypeName">The user defined type name.</param>
|
|
public UdtTypeHandler(string udtTypeName)
|
|
{
|
|
if (string.IsNullOrEmpty(udtTypeName)) throw new ArgumentException("Cannot be null or empty", udtTypeName);
|
|
this.udtTypeName = udtTypeName;
|
|
}
|
|
|
|
object ITypeHandler.Parse(Type destinationType, object value)
|
|
{
|
|
return value is DBNull ? null : value;
|
|
}
|
|
|
|
void ITypeHandler.SetValue(IDbDataParameter parameter, object value)
|
|
{
|
|
#pragma warning disable 0618
|
|
parameter.Value = SanitizeParameterValue(value);
|
|
#pragma warning restore 0618
|
|
if(!(value is DBNull)) StructuredHelper.ConfigureUDT(parameter, udtTypeName);
|
|
}
|
|
}
|
|
}
|
|
}
|