/// <summary>
        /// 添加新SystemUserLog记录
        /// </summary>
        /// <param name="model">SystemUserLog实体对象</param>
        /// <returns>新插入数据的id</returns>
        public static int Insert(SystemUserLog model, SqlConnection conn = null, SqlTransaction transaction = null)
        {
            var sql = new StringBuilder();

            sql.Append("INSERT INTO [SystemUserLog]([SystemUserId], [SystemUserName], [ActionRoute], [Details], [Type], [IP], [CreatedTime])");
            sql.Append(" OUTPUT INSERTED.[Id] ");
            sql.Append("VALUES(@SystemUserId, @SystemUserName, @ActionRoute, @Details, @Type, @IP, @CreatedTime)");
            var ret = 0;

            if (conn != null)
            {
                if (transaction == null)
                {
                    throw new ArgumentNullException("transaction");
                }
                ret = conn.ExecuteScalar <int>(sql.ToString(), model, transaction);
            }
            else
            {
                using (var conn1 = GetOpenConnection())
                {
                    ret = conn1.ExecuteScalar <int>(sql.ToString(), model);
                }
            }

            return(ret);
        }
 /// <summary>
 /// 更新SystemUserLog数据记录
 /// </summary>
 /// <param name="model">SystemUserLog实体对象</param>
 /// <param name="fields">需要更新的字段名字</param>
 /// <param name="reverse">反转给定的更新字段</param>
 /// <returns>是否成功,true为成功</returns>
 public static bool Update(SystemUserLog model, Expression <Func <SystemUserLog, bool> > predicate, SqlConnection conn, SqlTransaction transaction, params SystemUserLogColumn[] fields)
 {
     return(Update(
                model: model,
                predicate: predicate,
                reverse: false,
                conn: conn,
                transaction: transaction,
                fields: fields));
 }
 /// <summary>
 /// 更新SystemUserLog数据记录
 /// </summary>
 /// <param name="model">SystemUserLog实体对象</param>
 /// <param name="fields">需要更新的字段名字</param>
 /// <param name="reverse">反转给定的更新字段</param>
 /// <returns>是否成功,true为成功</returns>
 public static bool Update(SystemUserLog model, Expression <Func <SystemUserLog, bool> > predicate, bool reverse, params SystemUserLogColumn[] fields)
 {
     return(Update(
                model: model,
                predicate: predicate,
                reverse: reverse,
                conn: null,
                transaction: null,
                fields: fields));
 }
 /// <summary>
 /// 更新SystemUserLog数据记录
 /// </summary>
 /// <param name="model">SystemUserLog实体对象</param>
 /// <param name="fields">需要更新的字段名字</param>
 /// <param name="reverse">反转给定的更新字段</param>
 /// <returns>是否成功,true为成功</returns>
 public static bool Update(SystemUserLog model, bool reverse, SqlConnection conn, SqlTransaction transaction, params SystemUserLogColumn[] fields)
 {
     return(Update(
                model: model,
                predicate: null,
                reverse: reverse,
                conn: conn,
                transaction: transaction,
                fields: fields));
 }
 /// <summary>
 /// 更新SystemUserLog数据记录
 /// </summary>
 /// <param name="model">SystemUserLog实体对象</param>
 /// <param name="fields">需要更新的字段名字</param>
 /// <param name="reverse">反转给定的更新字段</param>
 /// <returns>是否成功,true为成功</returns>
 public static bool Update(SystemUserLog model, params SystemUserLogColumn[] fields)
 {
     return(Update(
                model: model,
                predicate: null,
                reverse: false,
                conn: null,
                transaction: null,
                fields: fields));
 }
        /// <summary>
        /// 获取指定的SystemUserLog实体对象
        /// </summary>
        /// <param name="Id">Id</param>
        /// <returns>SystemUserLog实体</returns>
        public static SystemUserLog GetModel(int Id)
        {
            var sql = new StringBuilder();

            sql.Append("SELECT TOP 1 [Id], [SystemUserId], [SystemUserName], [ActionRoute], [Details], [Type], [IP], [CreatedTime] FROM [SystemUserLog] ");
            sql.Append(" WHERE [Id]=@Id ");
            SystemUserLog ret = null;

            using (var conn = GetOpenConnection())
            {
                ret = conn.QueryFirstOrDefault <SystemUserLog>(sql.ToString(), new { @Id = Id });
            }

            return(ret);
        }
        /// <summary>
        /// 获取指定的SystemUserLog实体对象
        /// </summary>
        public static SystemUserLog GetModel(Expression <Func <SystemUserLog, bool> > predicate)
        {
            var parser    = new PredicateParser();
            var where_str = parser.Parse(predicate);

            var sql = new StringBuilder();

            sql.Append("SELECT TOP 1 * FROM [SystemUserLog] ");
            sql.Append(" WHERE " + where_str);
            SystemUserLog ret = null;

            using (var conn = GetOpenConnection())
            {
                ret = conn.QueryFirstOrDefault <SystemUserLog>(sql.ToString());
            }

            return(ret);
        }
        /// <summary>
        /// 更新SystemUserLog数据记录
        /// </summary>
        /// <param name="model">SystemUserLog实体对象</param>
        /// <param name="fields">需要更新的字段名字</param>
        /// <param name="reverse">反转给定的更新字段</param>
        /// <returns>是否成功,true为成功</returns>
        public static bool Update(SystemUserLog model, Expression <Func <SystemUserLog, bool> > predicate, bool reverse, SqlConnection conn, SqlTransaction transaction, params SystemUserLogColumn[] fields)
        {
            var where_str = string.Empty;

            if (predicate != null)
            {
                var parser = new PredicateParser();
                where_str = parser.Parse(predicate);
            }
            else
            {
                where_str = "[Id] = @Id";
            }

            var sql = new StringBuilder();

            sql.Append("UPDATE [SystemUserLog]");
            if (fields == null || fields.Length == 0)
            {
                sql.Append(" SET [SystemUserId] = @SystemUserId, [SystemUserName] = @SystemUserName, [ActionRoute] = @ActionRoute, [Details] = @Details, [Type] = @Type, [IP] = @IP, [CreatedTime] = @CreatedTime");
            }
            else
            {
                if (reverse == true)
                {
                    fields = (SystemUserLogColumn[])Columns.All.Except(fields);
                }
                sql.Append(" SET ");
                for (int i = 0; i < fields.Length; i++)
                {
                    if (fields[i].IsAddEqual)
                    {
                        sql.Append("[" + fields[i].Name + "] += @" + fields[i].Name + "");
                        fields[i].SetAddEqual();
                    }
                    else
                    {
                        sql.Append("[" + fields[i].Name + "] = @" + fields[i].Name + "");
                    }

                    if (i != fields.Length - 1)
                    {
                        sql.Append(",");
                    }
                }
            }
            sql.Append(" WHERE " + where_str);
            var ret = false;

            if (conn != null)
            {
                if (transaction == null)
                {
                    throw new ArgumentNullException("transaction");
                }
                ret = conn.Execute(sql.ToString(), model, transaction) > 0;
            }
            else
            {
                using (var conn1 = GetOpenConnection())
                {
                    ret = conn1.Execute(sql.ToString(), model) > 0;
                }
            }

            return(ret);
        }