Beispiel #1
0
 /// <summary>
 /// 过滤掉逻辑删除的数据,条件为IsDelete==null or IsDelete = false
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 SuuchaExpression LogicDeleteCondition <T>()
 {
     if (typeof(T).IsSubclassOf(typeof(BaseEntity)))
     {
         SuuchaBinaryExpression condition = SuuchaExpression.Equal(new SuuchaMemberExpression("IsDeleted"), new SuuchaConstantExpression(false));
         return(SuuchaExpression.Or(condition, SuuchaExpression.Equal(new SuuchaMemberExpression("IsDeleted"), new SuuchaConstantExpression(null))));
     }
     return(SuuchaExpression.Equal(SuuchaExpression.Constant(1), SuuchaExpression.Constant(1)));
 }
Beispiel #2
0
        /// <summary>
        /// 生成主键查询条件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="keyList"></param>
        /// <returns></returns>
        SuuchaExpression KeyCondition <T>(List <object[]> keyList)
        {
            var condition = SuuchaExpression.Equal(SuuchaExpression.Constant(0), SuuchaExpression.Constant(1));

            PropertyInfo[] pis = EntityTool.GetKeyProperty <T>();
            foreach (var values in keyList)
            {
                if (values.Length != pis.Length)
                {
                    throw new Exception("主键值数量必须为:" + pis.Length);
                }
                SuuchaBinaryExpression kExp = null;
                for (int i = 0; i < pis.Length; i++)
                {
                    kExp = 0 == i?SuuchaExpression.Equal(pis[i].Name, values[i]) : SuuchaExpression.And(kExp, SuuchaExpression.Equal(pis[i].Name, values[i]));
                }
                condition = SuuchaExpression.Or(condition, kExp);
            }
            return(condition);
        }