コード例 #1
0
ファイル: Orm.cs プロジェクト: zh-qi/onlyorm
        /// <summary>
        /// 根据实例主键进行更新
        /// </summary>
        /// <param name="action">更新动作</param>
        /// <param name="conditions">更新的条件</param>
        public static bool UpdateWhere <T>(Expression <Action <T> > action, Expression <Func <T, bool> > conditions) where T : OrmBaseModel
        {
            SqlVisitor visitor = new SqlVisitor();

            visitor.Visit(action);
            var setStr     = visitor.GetSql();
            var setPrarmes = visitor.GetParameters();

            visitor.Visit(conditions);
            var whereStr     = visitor.GetSql();
            var wherePrarmes = visitor.GetParameters();

            var sqlStr = SqlCache <T> .GetSql(SqlType.UpdateWhere) + setStr + " WHERE " + whereStr;

            var allParames = new List <MySqlParameter>();

            allParames.AddRange(setPrarmes);
            allParames.AddRange(wherePrarmes);

            return(ExceteSql <bool>(sqlStr, allParames.ToArray(), command =>
            {
                var result = command.ExecuteNonQuery();
                return result >= 1;
            }));
        }
コード例 #2
0
ファイル: Orm.cs プロジェクト: zh-qi/onlyorm
        /// <summary>
        /// 批量获取符合条件的数据
        /// </summary>
        /// <param name="conditions">查找的条件</param>
        public static IList <T> FindWhere <T>(Expression <Func <T, bool> > conditions) where T : OrmBaseModel
        {
            SqlVisitor visitor = new SqlVisitor();

            visitor.Visit(conditions);
            var sqlStr = SqlCache <T> .GetSql(SqlType.FindWhere) + visitor.GetSql();

            var parameters = visitor.GetParameters();

            return(ExceteSql <IList <T> >(sqlStr, parameters, command =>
            {
                var result = new List <T>();
                var type = typeof(T);
                var properies = SqlCache <T> .AllProperties;
                var adapter = new MySqlDataAdapter(command);
                var dataSet = new DataSet();
                var count = adapter.Fill(dataSet);

                for (var i = 0; i < dataSet.Tables[0].Rows.Count; i++)
                {
                    T t = Activator.CreateInstance <T>();
                    foreach (var proerty in properies)
                    {
                        var value = dataSet.Tables[0].Rows[i][proerty.GetMappingName()];
                        proerty.SetValue(t, value is DBNull ? null : value);
                    }
                    result.Add(t);
                }

                return result;
            }));
        }
コード例 #3
0
ファイル: Orm.cs プロジェクト: zh-qi/onlyorm
        /// <summary>
        /// 根据表达式目录树,批量的删除
        /// </summary>
        /// <param name="conditions">删除的条件</param>
        public static bool DeleateWhere <T>(Expression <Func <T, bool> > conditions) where T : OrmBaseModel
        {
            if (null == conditions)
            {
                return(false);
            }

            SqlVisitor visitor = new SqlVisitor();

            visitor.Visit(conditions);
            var sqlStr = SqlCache <T> .GetSql(SqlType.DeleateWhere) + visitor.GetSql();

            var parameters = visitor.GetParameters();

            return(ExceteSql <bool>(sqlStr, parameters, command =>
            {
                var result = command.ExecuteNonQuery();
                return result >= 1;
            }));
        }