MemberNoExpressionResolve.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace SqlSugar
  8. {
  9. public class MemberNoExpressionResolve : BaseResolve
  10. {
  11. public MemberNoExpressionResolve(ExpressionParameter parameter) : base(parameter)
  12. {
  13. var expression = base.Expression as MemberExpression;
  14. var isLeft = parameter.IsLeft;
  15. var isField = expression.Member is System.Reflection.FieldInfo;
  16. var isProperty = expression.Member is System.Reflection.PropertyInfo;
  17. var baseParameter = parameter.BaseParameter;
  18. var isSetTempData = baseParameter.CommonTempData.HasValue() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
  19. object value = GetValue(expression, isField, isProperty);
  20. switch (base.Context.ResolveType)
  21. {
  22. case ResolveExpressType.WhereSingle:
  23. case ResolveExpressType.WhereMultiple:
  24. case ResolveExpressType.SelectSingle:
  25. case ResolveExpressType.SelectMultiple:
  26. case ResolveExpressType.Update:
  27. Update(parameter, isLeft, baseParameter, isSetTempData, value);
  28. break;
  29. case ResolveExpressType.FieldSingle:
  30. break;
  31. case ResolveExpressType.FieldMultiple:
  32. break;
  33. default:
  34. break;
  35. }
  36. }
  37. private void Update(ExpressionParameter parameter, bool? isLeft, ExpressionParameter baseParameter, bool isSetTempData, object value)
  38. {
  39. if (isSetTempData)
  40. {
  41. baseParameter.CommonTempData = value;
  42. }
  43. else
  44. {
  45. AppendValue(parameter, isLeft, value);
  46. }
  47. }
  48. private static object GetValue(MemberExpression expression, bool isField, bool isProperty)
  49. {
  50. object value = null;
  51. if (isField)
  52. {
  53. value = ExpressionTool.GetFiledValue(expression);
  54. }
  55. else if (isProperty)
  56. {
  57. value = ExpressionTool.GetPropertyValue(expression);
  58. }
  59. return value;
  60. }
  61. }
  62. }