Mapper.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 SugarMapper
  9. {
  10. private ISqlSugarClient _context;
  11. public SugarMapper(ISqlSugarClient context)
  12. {
  13. _context = context;
  14. }
  15. public string GetSelectValue<TResult>(QueryBuilder queryBuilder)
  16. {
  17. string result = string.Empty;
  18. var veiwModel = _context.EntityMaintenance.GetEntityInfo<TResult>();
  19. var exp = (queryBuilder.JoinExpression as LambdaExpression);
  20. List<KeyValuePair<string, JoinMapper>> selectItems = new List<KeyValuePair<string, JoinMapper>>();
  21. var exParsmeters = exp.Parameters.Select(it => new { shortName = it.Name, type = it.Type }).ToList();
  22. foreach (var viewColumns in veiwModel.Columns)
  23. {
  24. var isbreak = false;
  25. foreach (var expPars in exParsmeters)
  26. {
  27. if (isbreak)
  28. {
  29. break;
  30. }
  31. var entityInfo = _context.EntityMaintenance.GetEntityInfo(expPars.type);
  32. var columns = entityInfo.Columns.Where(it => it.IsIgnore == false);
  33. var list = columns.Select(it => {
  34. var array = new string[]
  35. {
  36. it.PropertyName,
  37. it.DbColumnName,
  38. expPars.type.Name+it.PropertyName,
  39. expPars.type.Name+it.DbColumnName,
  40. expPars.type.Name+"_"+it.PropertyName,
  41. expPars.type.Name+"_"+it.DbColumnName,
  42. expPars.shortName+it.PropertyName,
  43. expPars.shortName+it.DbColumnName,
  44. };
  45. return new { it, array };
  46. }).ToList();
  47. var columnInfo= list.FirstOrDefault(y => y.array.Select(z=>z.ToLower()).Contains(viewColumns.PropertyName.ToLower()));
  48. if (columnInfo != null)
  49. {
  50. JoinMapper joinMapper = new JoinMapper()
  51. {
  52. AsName=viewColumns.PropertyName,
  53. DbName=columnInfo.it.DbColumnName
  54. };
  55. //var isNoPgAuto = queryBuilder.Context.CurrentConnectionConfig.MoreSettings?.PgSqlIsAutoToLower == false;
  56. //var isNoUpper = this._context.CurrentConnectionConfig?.MoreSettings?.IsAutoToUpper == false;
  57. var shortName = queryBuilder.Builder.GetTranslationColumnName(expPars.shortName);
  58. selectItems.Add(new KeyValuePair<string, JoinMapper>(shortName, joinMapper));
  59. isbreak = true;
  60. }
  61. }
  62. }
  63. result = queryBuilder.GetSelectByItems(selectItems);
  64. //if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
  65. //{
  66. // result = result.ToLower();
  67. //}
  68. return result;
  69. }
  70. }
  71. }