Yeah patch was added. The amount of work needed was ridiculous so it should be added in really..
On Sun, Aug 2, 2009 at 11:48 PM, Fabio Maulo <[email protected]> wrote: > well... everybody is interested and the right place for a patch regarding > an NH issue is the JIRA ticket. > > 2009/8/2 Mikael Henriksson <[email protected]> > > Found this as a patch for Oracle. I'll try to copy the behavior to MS SQL >> 2005. Not sure about Jira but I probably should add this as a patch or >> whatever when it is done? Anyone interested? >> >> case DbType.Xml: >> //prepare OracleXmlType in ODP.NET >> sqlType = SqlTypeFactory.GetString(0); >> base.InitializeParameter(dbParam, name, sqlType); >> >> //not make sure to override the OracleDbType >> global::System.Type oracleDbTypeEnumType = >> global::System.Type.GetType("Oracle.DataAccess.Client.OracleDbType, >> Oracle.DataAccess"); >> dbParam.GetType().GetProperty("OracleDbType").SetValue(dbParam, >> oracleDbTypeEnumType.GetField("XmlType").GetValue(oracleDbTypeEnumType), >> null); >> break; >> >> >> >> 2009/7/31 Mikael Henriksson <[email protected]> >> >>> I tried adding DbType.Xml to the 2005 Dialect but the build messed up >>> something or fluent nhibernate didn't like the rebuild. >>> What other steps are there besides RegisterColumnType(DbType.Xml, "XML"); >>> ? I modified the previous code to return new SqlType[] { new SqlXmlType() >>> }; >>> Anything else I have to do? >>> >>> >>> 2009/7/31 Mikael Henriksson <[email protected]> >>> >>>> Never mind, it is interface based. I've done too much coding today Zzzz >>>> >>>> 2009/7/31 Mikael Henriksson <[email protected]> >>>> >>>> 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 >>>>>> >> >>>>>> >> >> >>>>>> > >>>>>> >>>>>> >>>>> >>>> >>> >> >> >> > > > -- > 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 -~----------~----~----~----~------~----~------~--~---
