Do I need to update NHibernate and recompile it or can I load it
dynamically?

2009/7/30 Mikael Henriksson <[email protected]>

> Ok, I found the following code over at http://gist.github.com/47082 :
>
> using System;
> using System.Collections.Generic;
> using System.Data;
> using System.Data.Common;
> using System.Text;
> using System.Xml;
> using NHibernate.SqlTypes;
> using NHibernate.UserTypes;
>
> namespace NHibernate.Custom
> {
> public class XmlType : IUserType
> {
>    public new bool Equals(object x, object y)
>    {
>        if (x == null || y == null)
>            return false;
>
>        var xdoc_x = (XmlDocument) x;
>        var xdoc_y = (XmlDocument) y;
>        return xdoc_y.OuterXml == xdoc_x.OuterXml;
>    }
>
>    public int GetHashCode(object x)
>    {
>        return x.GetHashCode();
>    }
>
>
>    public object NullSafeGet(IDataReader rs, string[] names, object owner)
>    {
>        if (names.Length != 1)
>            throw new InvalidOperationException("names array has more than
> one element. can't handle this!");
>
>        var document = new XmlDocument();
>
>        var val = rs[names[0]] as string;
>
>        if (val != null)
>        {
>            document.LoadXml(val);
>            return document;
>        }
>
>        return null;
>    }
>
>    public void NullSafeSet(IDbCommand cmd, object value, int index)
>    {
>        var parameter = (DbParameter )cmd.Parameters[index];
>
>        if(value == null)
>        {
>            parameter.Value = DBNull.Value;
>            return;
>        }
>
>        parameter.Value = ((XmlDocument) value).OuterXml;
>    }
>
>    public object DeepCopy(object value)
>    {
>
>        var toCopy = value as XmlDocument;
>
>        if(toCopy==null)
>            return null;
>
>        var copy = new XmlDocument();
>        copy.LoadXml(toCopy.OuterXml);
>        return copy;
>    }
>
>    public object Replace(object original, object target, object owner)
>    {
>        throw new NotImplementedException();
>    }
>
>    public object Assemble(object cached, object owner)
>    {
>        var str = cached as string;
>        if (str != null)
>        {
>            var doc = new XmlDocument();
>            doc.LoadXml(str);
>            return doc;
>        }
>        else
>        {
>            return null;
>        }
>
>    }
>
>    public object Disassemble(object value)
>    {
>        var val = value as XmlDocument;
>        if(val != null)
>        {
>            return val.OuterXml;
>        }
>        else
>        {
>            return null;
>        }
>    }
>
>    public SqlType[] SqlTypes
>    {
>        get
>        {
>            return new SqlType[] { new SqlXmlStringType() };
>        }
>    }
>
>    public Type ReturnedType
>    {
>        get { return typeof(XmlDocument); }
>    }
>
>    public bool IsMutable
>    {
>        get { return true; }
>    }
> }
>
> public class SqlXmlType : SqlType
> {
>    public SqlXmlType() : base(DbType.Xml)
>    {
>    }
> }
>
> public class SqlXmlStringType : SqlType
> {
>    public SqlXmlStringType()
>        : base(DbType.String, 4000)
>    {
>    }
> }
>
> }
>
> 2009/7/30 Mikael Henriksson <[email protected]>
>
> >
> > Excuse me for being a n00b but that didn't help me much. So I need to
> create my own IUserType/IProperty for now? I have tried searching for this
> on both google and bing but I haven't had any luck yet. Any help
> appreciated!
> >
> >
> > 2009/7/29 Fabio Maulo <[email protected]>
> >>
> >> http://nhjira.koah.net/browse/NH-866
> >>
> >> 2009/7/29 Mikael Henriksson <[email protected]>
> >>>
> >>> Hi,
> >>>
> >>> Is it possible to map the sql db type Xml to a property of type
> XDocument/XmlDocument? If it's not supported by default how do I work around
> it?
> >>>
> >>>
> >>
> >>
> >>
> >> --
> >> Fabio Maulo
> >>
> >> > >>
> >
>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to