CoalesceResolveItems.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Text;
  6. namespace SqlSugar
  7. {
  8. public class CoalesceResolveItems : MethodCallExpressionResolve
  9. {
  10. public CoalesceResolveItems(ExpressionParameter parameter) : base(parameter)
  11. {
  12. string name = "IsNull";
  13. var express = base.Expression as BinaryExpression;
  14. var args = new List<Expression>() {
  15. express.Left,
  16. express.Right
  17. };
  18. var isLeft = parameter.IsLeft;
  19. MethodCallExpressionModel model = new MethodCallExpressionModel();
  20. model.Args = new List<MethodCallExpressionArgs>();
  21. switch (this.Context.ResolveType)
  22. {
  23. case ResolveExpressType.WhereSingle:
  24. case ResolveExpressType.WhereMultiple:
  25. Check.Exception(name == "GetSelfAndAutoFill", "SqlFunc.GetSelfAndAutoFill can only be used in Select.");
  26. base.Where(parameter, isLeft, name, args, model);
  27. break;
  28. case ResolveExpressType.SelectSingle:
  29. case ResolveExpressType.SelectMultiple:
  30. case ResolveExpressType.Update:
  31. base.Select(parameter, isLeft, name, args, model);
  32. break;
  33. case ResolveExpressType.FieldSingle:
  34. case ResolveExpressType.FieldMultiple:
  35. base.Field(parameter, isLeft, name, args, model);
  36. break;
  37. default:
  38. break;
  39. }
  40. }
  41. }
  42. }