Exemple #1
0
        /// <summary>
        /// 修改指定条件数据的指定字段
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="TPrimaryKey"></typeparam>
        /// <param name="conn"></param>
        /// <param name="fieldValueList">
        ///     要修改的字段和值对,注意这里的Field是数据表的字段,而不是实体的属性
        ///     FieldValuePairs.New().Add(字段, 值).Add(...)
        ///     注意:此方法不会忽略已指定为UpdateIgnore的字段
        /// </param>
        /// <param name="condition"></param>
        /// <param name="getUserKeyFunc"></param>
        /// <param name="trans"></param>
        /// <returns></returns>
        public static int Set <T, TPrimaryKey>(this SqlConnection conn,
                                               FieldValuePairs fieldValueList,
                                               ConditionBuilder condition,
                                               Func <TPrimaryKey> getUserKeyFunc = null,
                                               SqlTransaction trans = null) where T : IBaseEntity <TPrimaryKey>
        {
            condition      = condition ?? ConditionBuilder.New();
            fieldValueList = fieldValueList ?? FieldValuePairs.New();

            var info = EntityInfoContainer.Get(typeof(T));

            var userId = getUserKeyFunc != null?getUserKeyFunc.Invoke() : default;

            if (info.IsUpdateAudit)
            {
                if (!fieldValueList.Exists(f => f.Field == "UpdateBy"))
                {
                    fieldValueList.Add("UpdateBy", userId);
                }

                if (!fieldValueList.Exists(f => f.Field == "UpdateAt"))
                {
                    fieldValueList.Add("UpdateAt", DateTime.Now);
                }
            }

            var stringParameter = fieldValueList.Invoke();

            var sql = SqlServerSqlBuilder.UpdateByCondition(info, stringParameter.Sql, condition.ToCondition());

            stringParameter.Parameters.AddDynamicParams(condition.ToParameters());

            return(conn.Execute(sql, stringParameter.Parameters, trans));
        }
Exemple #2
0
 /// <summary>
 /// 通过条件更新指定字段
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="fieldValuePairs">字段|值 对</param>
 /// <param name="condition">条件</param>
 /// <returns></returns>
 public int Set <T>(FieldValuePairs fieldValuePairs, ConditionBuilder condition) where T : BaseEntity <TPrimaryKey>
 {
     return(ToDo(conn => conn.Set <T, TPrimaryKey>(fieldValuePairs, condition, _getUserKeyFunc)));
 }