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.
