// This IUserType is for trimming the spaces from strings before loading into your objects and database // To use this you must reference this type, for the properties you want trimmed, in your mapping files for example: // <property name="FirstName" column="FIRSTNM" type="MyNHibernateUserTypes.StringTrim, MyNHibernateUserTypes"/>
using System; using System.Data; using NHibernate; using NHibernate.SqlTypes; using NHibernate.UserTypes;
namespace MyNHibernateUserTypes { /// <summary> /// Trims a string before passing it to the object and database /// </summary> public class StringTrim : IUserType {
public bool IsMutable { get { return true; } }
public Type ReturnedType { get { return typeof(String); } }
public SqlType[] SqlTypes { get { return new[] { NHibernateUtil.String.SqlType }; } }
public object NullSafeGet(IDataReader rs, string[] names, object owner) { var obj = NHibernateUtil.String.NullSafeGet(rs, names[0]); if (obj == null) { return null; } else { return ((String)obj).Trim(); } }
public void NullSafeSet(IDbCommand cmd, object value, int index) { if ((String)value == String.Empty) { ((IDataParameter)cmd.Parameters[index]).Value = DBNull.Value; } else { ((IDataParameter)cmd.Parameters[index]).Value = ((String)value).Trim(); } }
public object DeepCopy(object value) { return value; }
public object Replace(object original, object target, object owner) { return original; }
public object Assemble(object cached, object owner) { return cached; }
public object Disassemble(object value) { return value; }
public new bool Equals(object x, object y) { if (ReferenceEquals(x, y)) return true;
if (x == null || y == null) return false;
return x.Equals(y); }
public int GetHashCode(object x) { return x.GetHashCode(); } } }
|