Please navigate to the Jira issue and vote for getting it implemented :)

On Mon, Sep 21, 2009 at 9:25 AM, Johannes Gustafsson <[email protected]>wrote:

> This looks interesting. Any chance of it getting committed to the trunk?
> Regards,
> Johannes
>
> On Sun, Sep 20, 2009 at 1:19 AM, Mikael Henriksson 
> <[email protected]>wrote:
>
>> I recommend you have a look at my blog post :
>> http://blog.zoolutions.se/post/2009/08/13/How-to-store-XmlDocument-as-Xml-in-Sql-Server-2005-using-NHibernate.aspx
>> <http://blog.zoolutions.se/post/2009/08/13/How-to-store-XmlDocument-as-Xml-in-Sql-Server-2005-using-NHibernate.aspx>and
>> download the patch I created : http://nhjira.koah.net/browse/NH-866
>>
>> problem is that NHibernate does not support SqlDbType.Xml out of the box
>> so you need to download the source code and apply the patch. Then you can
>> either use your own or my XmlUserType
>>
>>
>> On Thu, Sep 3, 2009 at 12:20 PM, csetzkorn <[email protected]> wrote:
>>
>>>
>>> I have made a start.
>>>
>>> Mapping:
>>>
>>> <class name="X" ...
>>>
>>>    <property name="XML" column="XML">
>>>      <type name="a.b.XmlType, a"></type>
>>>    </property>
>>>
>>> </class>
>>>
>>> Code of XmlType below (cobbled together from the Internet). Problem:
>>>
>>> var cfg = new Configuration();
>>> cfg..Configure();
>>> cfg.AddAssembly("Diseases");
>>> new SchemaUpdate(cfg).Execute(false, true);
>>>
>>> This works for all other classes (tables appear in db) but not for
>>> this class (X). There is no exception as well.
>>>
>>> Looking forward to any feedback. Thanks.
>>>
>>> XmlType code:
>>>
>>> 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 a.b
>>> {
>>>    public class XmlType : IUserType
>>>    {
>>>        public new bool Equals(object x, object y)
>>>        {
>>>            XmlDocument xdoc_x = (XmlDocument) x;
>>>            XmlDocument xdoc_y = (XmlDocument) y;
>>>            return xdoc_y.OuterXml == xdoc_x.OuterXml;
>>>        }
>>>
>>>        public object Disassemble(object value)
>>>        {
>>>            throw new Exception("The method or operation is not
>>> implemented.");
>>>        }
>>>
>>>        public int GetHashCode(object x)
>>>        {
>>>            throw new Exception("The method or operation is not
>>> implemented.");
>>>        }
>>>
>>>        public object Replace(object original, object target, object
>>> owner)
>>>        {
>>>            return original;
>>>        }
>>>
>>>        public object Assemble(object cached, object owner)
>>>        {
>>>            throw new Exception("The method or operation is not
>>> implemented.");
>>>        }
>>>
>>>        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!");
>>>            XmlDocument document = new XmlDocument();
>>>            string 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)
>>>        {
>>>            DbParameter parameter = (DbParameter )cmd.Parameters
>>> [index];
>>>            if(value == null)
>>>            {
>>>                parameter.Value = DBNull.Value;
>>>                return;
>>>            }
>>>            parameter.Value = ((XmlDocument) value).OuterXml;
>>>        }
>>>
>>>        public object DeepCopy(object value)
>>>        {
>>>            XmlDocument other = (XmlDocument) value;
>>>            XmlDocument xdoc = new XmlDocument();
>>>            xdoc.LoadXml(other.OuterXml);
>>>            return xdoc;
>>>        }
>>>
>>>        public SqlType[] SqlTypes
>>>        {
>>>            get
>>>            {
>>>                return new SqlType[] { new SqlXmlType() };
>>>            }
>>>        }
>>>
>>>        public System.Type ReturnedType
>>>        {
>>>            get { return typeof(XmlDocument); }
>>>        }
>>>
>>>        public bool IsMutable
>>>        {
>>>            get { return true; }
>>>        }
>>>    }
>>>
>>>    public class SqlXmlType : SqlType
>>>    {
>>>        public SqlXmlType() : base(System.Data.DbType.Xml)
>>>        {
>>>         }
>>>    }
>>> }
>>>
>>>
>>> On Sep 3, 9:14 am, csetzkorn <[email protected]> wrote:
>>> > Hi,
>>> >
>>> > I have a class with a XmlDocument attribute (or XElement I do not
>>> > care) which I would like to map to a column of the XML data type in
>>> > SQL server 2005. I have done some googeling but did not get anywhere
>>> > with the suggested solutions. Is anyone aware of a working/easy
>>> > solution to my problem? Thanks a lot in advance.
>>> >
>>> > Best wishes,
>>> >
>>> > Christian
>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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