SqlSugar/Src/Asp.Net/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs

280 lines
10 KiB
C#
Raw Normal View History

2017-01-30 15:19:34 +08:00
using System;
2017-05-31 01:29:25 +08:00
using System.Collections;
2017-01-30 15:19:34 +08:00
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
2017-07-11 13:27:41 +08:00
public partial class DefaultDbMethod : IDbMethods
2017-01-30 15:19:34 +08:00
{
2017-06-12 17:47:25 +08:00
public virtual string IIF(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
return string.Format("( CASE WHEN {0} THEN {1} ELSE {2} END )", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
}
2017-01-30 15:19:34 +08:00
public virtual string IsNullOrEmpty(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format("( {0}='' OR {0} IS NULL )", parameter.MemberName);
2017-01-30 15:19:34 +08:00
}
2017-01-30 18:53:06 +08:00
2017-06-04 09:27:41 +08:00
public virtual string HasValue(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
return string.Format("( {0}<>'' AND {0} IS NOT NULL )", parameter.MemberName);
}
public virtual string HasNumber(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
return string.Format("( {0}>0 AND {0} IS NOT NULL )", parameter.MemberName);
}
2017-04-30 11:09:27 +08:00
public virtual string ToUpper(MethodCallExpressionModel model)
2017-01-30 18:53:06 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" (UPPER({0})) ", parameter.MemberName);
2017-01-30 18:53:06 +08:00
}
2017-04-30 11:09:27 +08:00
public virtual string ToLower(MethodCallExpressionModel model)
2017-01-30 18:53:06 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" (LOWER({0})) ", parameter.MemberName);
2017-01-30 18:53:06 +08:00
}
2017-01-30 22:05:08 +08:00
2017-04-30 11:09:27 +08:00
public virtual string Trim(MethodCallExpressionModel model)
2017-01-30 22:05:08 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" (rtrim(ltrim({0}))) ", parameter.MemberName);
2017-01-30 22:05:08 +08:00
}
2017-01-31 20:39:57 +08:00
2017-04-30 11:09:27 +08:00
public virtual string Contains(MethodCallExpressionModel model)
2017-01-31 20:39:57 +08:00
{
var parameter = model.Args[0];
2017-01-31 20:56:19 +08:00
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0} like '%'+{1}+'%') ", parameter.MemberName, parameter2.MemberName);
}
public virtual string ContainsArray(MethodCallExpressionModel model)
{
2017-05-31 01:29:25 +08:00
var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue;
2017-06-12 17:47:25 +08:00
List<object> inValues = new List<object>();
2017-05-31 01:29:25 +08:00
if (inValueIEnumerable != null)
{
foreach (var item in inValueIEnumerable)
{
inValues.Add(item);
}
}
2017-04-30 14:31:07 +08:00
var value = model.Args[1].MemberName;
string inValueString = null;
2017-05-31 01:29:25 +08:00
if (inValues != null && inValues.Count > 0)
2017-04-30 14:31:07 +08:00
{
2017-05-31 01:29:25 +08:00
inValueString = inValues.ToArray().ToJoinSqlInVals();
2017-04-30 14:31:07 +08:00
}
2017-06-12 17:47:25 +08:00
else
{
return " (1=2) ";
2017-04-30 14:31:07 +08:00
}
2017-06-12 17:47:25 +08:00
return string.Format(" ({0} IN ({1})) ", value, inValueString);
2017-01-31 20:39:57 +08:00
}
2017-04-29 22:51:41 +08:00
2017-06-25 13:13:34 +08:00
public virtual string Equals(MethodCallExpressionModel model)
2017-04-29 22:51:41 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0} = {1}) ", parameter.MemberName, parameter2.MemberName); ;
2017-04-29 22:51:41 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string DateIsSameDay(MethodCallExpressionModel model)
2017-04-29 22:51:41 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" (DATEDIFF(day,{0},{1})=0) ", parameter.MemberName, parameter2.MemberName); ;
2017-04-29 22:51:41 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string DateIsSameByType(MethodCallExpressionModel model)
2017-04-29 22:51:41 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
2017-06-12 17:47:25 +08:00
return string.Format(" (DATEDIFF({2},{0},{1})=0) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
2017-04-29 22:51:41 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string DateAddByType(MethodCallExpressionModel model)
2017-04-29 22:51:41 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
2017-04-30 14:31:07 +08:00
return string.Format(" (DATEADD({2},{1},{0})) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
2017-04-29 22:51:41 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string DateAddDay(MethodCallExpressionModel model)
2017-04-29 22:51:41 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-06-12 17:47:25 +08:00
return string.Format(" (DATEADD(day,{1},{0})) ", parameter.MemberName, parameter2.MemberName);
2017-04-29 22:51:41 +08:00
}
2017-04-29 23:08:14 +08:00
2017-06-25 13:13:34 +08:00
public virtual string Between(MethodCallExpressionModel model)
2017-04-29 23:08:14 +08:00
{
var parameter = model.Args[0];
var parameter1 = model.Args[1];
var parameter2 = model.Args[2];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0} BETWEEN {1} AND {2}) ", parameter.MemberName, parameter1.MemberName, parameter2.MemberName);
2017-04-29 23:08:14 +08:00
}
2017-04-29 23:20:31 +08:00
2017-06-25 13:13:34 +08:00
public virtual string StartsWith(MethodCallExpressionModel model)
2017-04-29 23:20:31 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0} like {1}+'%') ", parameter.MemberName, parameter2.MemberName);
2017-04-29 23:20:31 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string EndsWith(MethodCallExpressionModel model)
2017-04-29 23:20:31 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0} like '%'+{1}) ", parameter.MemberName, parameter2.MemberName);
2017-04-29 23:20:31 +08:00
}
2017-04-29 23:37:49 +08:00
2017-06-25 13:13:34 +08:00
public virtual string DateValue(MethodCallExpressionModel model)
2017-04-29 23:37:49 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
2017-04-30 14:31:07 +08:00
return string.Format(" ({0}({1})) ", parameter2.MemberName, parameter.MemberName);
2017-04-29 23:37:49 +08:00
}
2017-04-30 12:05:05 +08:00
2017-06-25 13:13:34 +08:00
public virtual string ToInt32(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS INT)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToInt64(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS BIGINT)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToString(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS NVARCHAR(MAX))", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToGuid(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS UNIQUEIDENTIFIER)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToDouble(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS FLOAT)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToBool(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS BIT)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string ToDate(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS DATETIME)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-07-08 02:02:58 +08:00
public virtual string ToTime(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
return string.Format(" CAST({0} AS TIME)", parameter.MemberName);
}
2017-06-25 13:13:34 +08:00
public virtual string ToDecimal(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format(" CAST({0} AS MONEY)", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string Substring(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
2017-06-12 17:47:25 +08:00
return string.Format("SUBSTRING({0},1 + {1},{2})", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string Length(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
2017-04-30 14:31:07 +08:00
return string.Format("LEN({0})", parameter.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-06-25 13:13:34 +08:00
public virtual string Replace(MethodCallExpressionModel model)
2017-04-30 12:05:05 +08:00
{
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
2017-04-30 14:31:07 +08:00
return string.Format("REPLACE({0},{1},{2})", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
2017-04-30 12:05:05 +08:00
}
2017-04-30 16:11:51 +08:00
2017-06-25 13:13:34 +08:00
public virtual string AggregateSum(MethodCallExpressionModel model)
2017-04-30 16:11:51 +08:00
{
var parameter = model.Args[0];
return string.Format("SUM({0})", parameter.MemberName);
}
2017-06-25 13:13:34 +08:00
public virtual string AggregateAvg(MethodCallExpressionModel model)
2017-04-30 16:11:51 +08:00
{
var parameter = model.Args[0];
return string.Format("AVG({0})", parameter.MemberName);
}
2017-06-25 13:13:34 +08:00
public virtual string AggregateMin(MethodCallExpressionModel model)
2017-04-30 16:11:51 +08:00
{
var parameter = model.Args[0];
return string.Format("MIN({0})", parameter.MemberName);
}
2017-06-25 13:13:34 +08:00
public virtual string AggregateMax(MethodCallExpressionModel model)
2017-04-30 16:11:51 +08:00
{
var parameter = model.Args[0];
return string.Format("MAX({0})", parameter.MemberName);
}
2017-06-25 13:13:34 +08:00
public virtual string AggregateCount(MethodCallExpressionModel model)
2017-04-30 16:11:51 +08:00
{
var parameter = model.Args[0];
return string.Format("COUNT({0})", parameter.MemberName);
}
2017-07-04 00:06:50 +08:00
public virtual string MappingColumn(MethodCallExpressionModel model)
{
var parameter = model.Args[0];
var parameter1 = model.Args[1];
return string.Format("{0}", parameter1.MemberValue);
}
2017-07-11 13:27:41 +08:00
public virtual string True()
{
return "( 1 = 1 ) ";
}
public virtual string False()
{
return "( 1 = 2 ) ";
}
2017-07-12 00:15:14 +08:00
public string GuidNew()
{
return "'"+Guid.NewGuid()+"' ";
}
2017-01-30 15:19:34 +08:00
}
}