Is this correct implimentation?

On Sep 14, 5:31 pm, Fabio Maulo <[email protected]> wrote:
> Can you copy it in thehttp://nhforge.org/wikis/howtonh/default.aspx?
>
> Thanks.
> <http://nhforge.org/wikis/howtonh/default.aspx>
>
>
>
> On Tue, Sep 14, 2010 at 2:40 AM, alexey_baranov <[email protected]> wrote:
> > Thank you very mauch for your halp! We are very apprishiate this. We
> > prefere clean way with IUserType. We have found some difference
> > between YesNo type in shared example and IPAddress type because of
> > refference mutable nature of IPAddress type. We are sharing our
> > version of IPAddressType and ask audience to point out our errors.
> > Thanks!
>
> > class IPAddressType : NHibernate.UserTypes.IUserType
> >    {
> >        public bool IsMutable
> >        {
> >            get { return true; }
> >        }
>
> >        public Type ReturnedType
> >        {
> >            get { return typeof(System.Net.IPAddress); }
> >        }
>
> >        public NHibernate.SqlTypes.SqlType[] SqlTypes
> >        {
> >            get { return new[]
> > { NHibernate.NHibernateUtil.String.SqlType }; }
> >        }
>
> >        public object NullSafeGet(System.Data.IDataReader rs, string[]
> > names, object owner)
> >        {
> >            var ADDRESS =
> > NHibernate.NHibernateUtil.String.NullSafeGet(rs, names[0]);
> >            if (ADDRESS == null)
> >                return null;
> >            try
> >            {
> >                return System.Net.IPAddress.Parse((string)ADDRESS);
> >            }
> >            catch (FormatException ex)
> >            {
> >                throw new
> > NHibernate.Exceptions.DataException(String.Format("Expected data to be
> > IP Address but was '{0}'.", ADDRESS), ex);
> >            }
> >        }
>
> >        public void NullSafeSet(System.Data.IDbCommand cmd, object
> > value, int index)
> >        {
> >            if (value == null)
> >            {
>
> > ((System.Data.IDataParameter)cmd.Parameters[index]).Value =
> > DBNull.Value;
> >            }
> >            else
> >            {
>
> > ((System.Data.IDataParameter)cmd.Parameters[index]).Value =
> > ((System.Net.IPAddress)value).ToString();
> >            }
> >        }
>
> >        public object DeepCopy(object value)
> >        {
> >            if (value == null)
> >                return null;
> >            else
> >                return new
> > System.Net.IPAddress(((System.Net.IPAddress)value).GetAddressBytes());
> >        }
>
> >        public object Replace(object original, object target, object
> > owner)
> >        {
> >            return DeepCopy(original);
> >        }
>
> >        public object Assemble(object cached, object owner)
> >        {
> >            return DeepCopy(cached);
> >        }
>
> >        public object Disassemble(object value)
> >        {
> >            return DeepCopy(value);
> >        }
>
> >        public new bool Equals(object x, object y)
> >        {
> >            if (ReferenceEquals(x, y)) return true;
>
> >            if (x == null && y == null) return true;
>
> >            if (x == null || y == null) return false;
>
> >            return x.ToString()== y.ToString();
> >        }
>
> >        public int GetHashCode(object x)
> >        {
> >            return x == null ?
> > typeof(System.Net.IPAddress).GetHashCode() + 473 : x.GetHashCode();
> >         }
> >    }
>
> > On Sep 13, 5:44 pm, kor <[email protected]> wrote:
> > > if you don't use it in queries (for example to do a query to load all
> > > the classes with an ip address that begin wtih 172) use
> > > type="serializable" (it will be saved in a blob column).
>
> > > otherwise save as string/varchar, the iusertpe implementation is
> > > simple, for example see thishttp://
> >www.lostechies.com/blogs/rhouston/archive/2008/03/23/mapping-s...
>
> > > for the convertions ipaddress <---> string
> > > uses ipaddress .ToString()  and IPAddress.Parse
>
> > --
> > 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]<nhusers%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/nhusers?hl=en.
>
> --
> 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