Ejemplo n.º 1
0
        public void WiteToStringWithReferenceTest()
        {
            var p = new People {
                Name = "fireasy"
            };
            Expression <Func <Work, bool> > expression = (s) => s.People.Name == p.Name;

            Console.WriteLine(ExpressionWriter.WriteToString(expression));
        }
Ejemplo n.º 2
0
        public void WiteToStringWithConstantTest()
        {
            var str = "fireasy";
            var p   = new People {
                Age = 34
            };
            Expression <Func <People, bool> > expression = (s) => s.Name == str && s.Age == p.Age;

            Console.WriteLine(ExpressionWriter.WriteToString(expression));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 通过表达式计算出对应的缓存键。
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        private static string GetKey(Expression expression)
        {
            var evalExp  = PartialEvaluator.Eval(expression, TranslateProviderBase.EvaluatedLocallyFunc);
            var cacheKey = ExpressionWriter.WriteToString(evalExp);

            //使用md5进行hash编码
            var md5 = new MD5CryptoServiceProvider();

            byte[] data = md5.ComputeHash(Encoding.Unicode.GetBytes(cacheKey));
            return("$." + Convert.ToBase64String(data, Base64FormattingOptions.None));
        }
        /// <summary>
        /// 通过表达式计算出对应的缓存键。
        /// </summary>
        /// <param name="expression">作为 Key 的 Lambda 表达式。</param>
        /// <param name="prefix">用于区分缓存的前缀。</param>
        /// <returns></returns>
        public string Generate(Expression expression, params string[] prefix)
        {
            var evalExp  = PartialEvaluator.Eval(expression, TranslateProviderBase.EvaluatedLocallyFunc);
            var cacheKey = ExpressionWriter.WriteToString(evalExp);

            //使用md5进行hash编码
            var md5  = new MD5CryptoServiceProvider();
            var data = md5.ComputeHash(Encoding.Unicode.GetBytes(cacheKey));

            var sb = new StringBuilder();

            foreach (var p in prefix)
            {
                if (!string.IsNullOrEmpty(p))
                {
                    sb.AppendFormat("{0}:", p);
                }
            }

            sb.Append(data.ToHex(true));

            return(sb.ToString());
        }
Ejemplo n.º 5
0
        public void WiteToStringWithSubqueryTest()
        {
            Expression <Func <People, bool> > expression = (s) => s.Works.Count(t => t.Company == "aa") > 0;

            Console.WriteLine(ExpressionWriter.WriteToString(expression));
        }
Ejemplo n.º 6
0
        public void WiteToStringWithLengthTest()
        {
            Expression <Func <People, bool> > expression = (s) => s.Name.Length == 4;

            Console.WriteLine(ExpressionWriter.WriteToString(expression));
        }
Ejemplo n.º 7
0
        public void WriteToStringTest()
        {
            Expression <Func <People, bool> > expression = (s) => s.Age == 12;

            Console.WriteLine(ExpressionWriter.WriteToString(expression));
        }