OracleXmlTypeToXmlDocumentPropertyHandler

A property handler that maps the Oracle XMLType type into an XmlDocument property.

A property handler that maps the Oracle XMLType type into an XmlDocument property.

The XML text is bound as a string, which Oracle converts implicitly, and is therefore subject to the string parameter size limit.

Overview

Name Description
Class OracleXmlTypeToXmlDocumentPropertyHandler
Namespace RepoDb.PropertyHandlers.Oracle
Package RepoDb.Oracle
Implements IPropertyHandler<object, XmlDocument>
Column type The Oracle XMLType type
Property type XmlDocument

Conversions

Method Direction Description
Get Database to property Converts the value returned by the driver (an OracleXmlType or a string) into XML text and parses it via XmlDocument.LoadXml(). null, DBNull, a null OracleXmlType and an empty value are returned as null.
Set Property to database Converts the XmlDocument into its XML text via OuterXml. A null value is written as null.

Exceptions

Exception Thrown When
ArgumentException The type of the value returned by the driver is not supported.

Usability

Bind the handler to the property that maps to an XMLType column.

Attribute

public class Document
{
    public int Id { get; set; }

    [Map("content"), PropertyHandler(typeof(OracleXmlTypeToXmlDocumentPropertyHandler))]
    public XmlDocument Content { get; set; }
}

Once bound, the library invokes the handler automatically when the property is read or written.

using (var connection = new OracleConnection(connectionString))
{
    var content = new XmlDocument();
    content.LoadXml("<root><item id=\"1\" /></root>");
    connection.Insert(new Document { Id = 1, Content = content });
    var document = connection.Query<Document>(e => e.Id == 1).First();
}

Fluent Mapping

To configure via FluentMapper:

FluentMapper
    .Entity<Document>()
    .PropertyHandler<OracleXmlTypeToXmlDocumentPropertyHandler>(e => e.Content);

Property Level Mapping

To configure via PropertyHandlerMapper:

PropertyHandlerMapper.Add<Document, OracleXmlTypeToXmlDocumentPropertyHandler>(e => e.Content, new OracleXmlTypeToXmlDocumentPropertyHandler(), true);

Type Level Mapping

To apply the handler to every property of the type XmlDocument:

PropertyHandlerMapper.Add<XmlDocument, OracleXmlTypeToXmlDocumentPropertyHandler>(new OracleXmlTypeToXmlDocumentPropertyHandler(), true);

See Also