public virtual string MethodNameToWhere(string methodName) { //QueryByUserNameAndIdOrNickNameAndChineseName if (string.IsNullOrEmpty(methodName)) { throw new ArgumentNullException(nameof(methodName)); } var methodNameCopy = methodName; MethodPrefixsKey methodPreix = null; foreach (var prefix in MethodPrefixs) { methodPreix = prefix; if (methodNameCopy.StartsWith(prefix.Name)) { methodNameCopy = methodNameCopy.Replace(prefix.Name, ""); break; } } var queryparms = new Queue <string>(); SplitParams(queryparms, OpKeys.ToArray(), methodNameCopy); var where = BuildWhere(queryparms); return(where); }
public virtual string MethodNameToSql <T>(string methodName) where T : class { if (string.IsNullOrEmpty(methodName)) { throw new ArgumentNullException(nameof(methodName)); } string sql = ""; var cacheKey = $"MethodNameToSql_{typeof(T)}_{methodName}"; var hit = SqlCacheDict.TryGetValue(cacheKey, out sql); if (hit) { return(sql); } MethodPrefixsKey methodPreix = null; foreach (var prefix in MethodPrefixs) { methodPreix = prefix; if (methodName.StartsWith(prefix.Name)) { break; } } if (methodPreix == null) { throw new Exception(string.Format("Can not hit sql method from method name :{0}", methodName)); } var select = GenericCallHelper.RunGenericMethod(this.GetType(), methodPreix.GeneratorMethod, new Type[] { typeof(T) }, this, null); var where = ""; if (methodPreix.NeedWhere) { where = " where " + MethodNameToWhere(methodName); } sql = select + where; SqlCacheDict.TryAdd(cacheKey, sql); return(sql); }