/// <summary> /// 准备Where的子句,填写了VersionStartTime。在插入操作时,VST应该是MinValue。否则应该是最后一条记录的时间 /// </summary> /// <param name="obj"></param> /// <param name="mapping"></param> /// <param name="ignoreProperties">忽略的属性</param> /// <returns></returns> public virtual WhereSqlClauseBuilder PrepareWhereSqlBuilder(T obj, ORMappingItemCollection mapping, string[] ignoreProperties) { obj.NullCheck("obj"); mapping.NullCheck("mapping"); WhereSqlClauseBuilder primaryKeyBuilder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(obj); ModifyTimeFieldsInWhereBuilder(obj, mapping, primaryKeyBuilder); return(primaryKeyBuilder); }
/// <summary> /// 生成删除数据的SQL(时间封口) /// </summary> /// <param name="obj"></param> /// <param name="mapping"></param> /// <param name="getDeleteSql"></param> /// <param name="addCurrentTimeVar"></param> /// <param name="ignoreProperties"></param> /// <returns></returns> public string ToDeleteSql(T obj, ORMappingItemCollection mapping, Func <string> getDeleteSql, bool addCurrentTimeVar = true, params string[] ignoreProperties) { obj.NullCheck("obj"); mapping.NullCheck("mapping"); getDeleteSql.NullCheck("getDeleteSql"); return(VersionStrategyUpdateSqlHelper.ConstructUpdateSql(null, (strB, context) => { strB.Append(getDeleteSql()); }, addCurrentTimeVar)); }
/// <summary> /// 生成Update和Insert混合的子句。先Update,然后通过RowCount判断是需要Insert。其中Update子句可以自己构造 /// </summary> /// <param name="obj"></param> /// <param name="mapping"></param> /// <param name="getUpdateSql"></param> /// <param name="getInsertSql"></param> /// <param name="addCurrentTimeVar">是否添加@currentTime变量</param> /// <param name="ignoreProperties">需要忽略的属性</param> /// <returns></returns> public string ToUpdateSql(T obj, ORMappingItemCollection mapping, Func <string> getUpdateSql, Func <string> getInsertSql, bool addCurrentTimeVar = true, params string[] ignoreProperties) { obj.NullCheck("obj"); mapping.NullCheck("mapping"); getUpdateSql.NullCheck("getUpdateSql"); getInsertSql.NullCheck("getInsertSql"); return(VersionStrategyUpdateSqlHelper.ConstructUpdateSql(null, (strB, context) => { this.PrepareSingleObjectUpdateSql(strB, obj, mapping, true, getUpdateSql, getInsertSql, ignoreProperties); }, addCurrentTimeVar)); }