打印本文 打印本文 关闭窗口 关闭窗口
nhibernate源码分析之四 持久化操作与SQL语句
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2650  更新时间:2007/11/14 11:13:17  文章录入:mintao  责任编辑:mintao
];
      }
   }

   if ( id!=null ) {
      IdentifierType.NullSafeSet( st, id, index, session );
      index += IdentifierColumnNames.Length;
   }

   return index;
}Dehydrate遍历持久对象的属性,并调用属性类型(IType接口)的NullSafeSet方法对IDbCommand对象中的参数进行赋值,PropertyTypes在AbstractEntityPersister类中定义,为所有属性类型的集合。

//*** NullableType.cs ***

public void NullSafeSet(IDbCommand cmd, object value, int index) {
   if (value==null) {
      ( (IDataParameter)cmd.Parameters[index] ).Value = DBNull.Value;
   }
   else {
      Set(cmd, value, index);
   }
}如为null,则设置参数值为DBNull.Value;否则调用Set方法,Set方法为virtual方法。

(待续...)

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口