1: public class BooleanType : IUserType
2: {
3: #region IUserType Member
4: public bool IsMutable
5: {
6: get { return false; }
7: }
8: public Type ReturnedType
9: {
10: // Muss den Typ zurückgeben, den
11: // er repräsentiert, damit NHibernate-Linq-Methoden funktionieren
12: get { return typeof(bool); }
13: }
14: SqlType baseType = new SqlType(System.Data.DbType.Int16);
15: public SqlType[] SqlTypes
16: {
17: get { return new[] { baseType }; }
18: }
19: public object NullSafeGet(System.Data.IDataReader rs, string[] names, object owner)
20: {
21: var obj = NHibernateUtil.Int16.NullSafeGet(rs, names[0]);
22: if (obj == null) return null;
23: bool bolVal = Convert.ToBoolean(obj);
24: return bolVal;
25: }
26: public void NullSafeSet(System.Data.IDbCommand cmd, object value, int index)
27: {
28: if (value == null)
29: {
30: ((IDataParameter)cmd.Parameters[index]).Value = DBNull.Value;
31: }
32: else
33: {
34: bool bolVal = Convert.ToBoolean(value);
35: // Wenn true, dann eins (true), ansonsten 0 (false)
36: ((IDataParameter)cmd.Parameters[index]).Value = bolVal ? 1 : 0;
37: }
38: }
39: public object DeepCopy(object value)
40: {
41: if (value == null) return 0;
42: return value;
43: }
44: public object Replace(object original, object target, object owner)
45: {
46: return original;
47: }
48: public object Assemble(object cached, object owner)
49: {
50: return cached;
51: }
52: public object Disassemble(object value)
53: {
54: return value;
55: }
56: public new bool Equals(object x, object y)
57: {
58: if (ReferenceEquals(x, y)) return true;
59: if (x == null || y == null) return false;
60: return x.Equals(y);
61: }
62: public int GetHashCode(object x)
63: {
64: return x.GetHashCode();
65: //x == null ? typeof(bool).GetHashCode() + 473 : x.GetHashCode();
66: }
67:
68: #endregion
69: }