From d2ee19c45bddece7be32ce6083fc90fdaff82f8d Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Wed, 2 Mar 2016 16:40:54 +0000 Subject: [PATCH] Set the DbType for XmlDocument / XDocument / XElement --- Dapper/XmlHandlers.cs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Dapper/XmlHandlers.cs b/Dapper/XmlHandlers.cs index 7d5af582..d5051f16 100644 --- a/Dapper/XmlHandlers.cs +++ b/Dapper/XmlHandlers.cs @@ -1,9 +1,21 @@ -using System.Xml; +using System.Data; +using System.Xml; using System.Xml.Linq; +#if COREFX +using IDbDataParameter = System.Data.Common.DbParameter; +#endif namespace Dapper { - internal sealed class XmlDocumentHandler : SqlMapper.StringTypeHandler + internal abstract class XmlTypeHandler : SqlMapper.StringTypeHandler + { + public override void SetValue(IDbDataParameter parameter, T value) + { + base.SetValue(parameter, value); + parameter.DbType = DbType.Xml; + } + } + internal sealed class XmlDocumentHandler : XmlTypeHandler { protected override XmlDocument Parse(string xml) { @@ -13,12 +25,12 @@ namespace Dapper } protected override string Format(XmlDocument xml) => xml.OuterXml; } - internal sealed class XDocumentHandler : SqlMapper.StringTypeHandler + internal sealed class XDocumentHandler : XmlTypeHandler { protected override XDocument Parse(string xml) => XDocument.Parse(xml); protected override string Format(XDocument xml) => xml.ToString(); } - internal sealed class XElementHandler : SqlMapper.StringTypeHandler + internal sealed class XElementHandler : XmlTypeHandler { protected override XElement Parse(string xml) => XElement.Parse(xml); protected override string Format(XElement xml) => xml.ToString();