|
|
@ -20,85 +20,45 @@ namespace SqlSugar |
|
|
|
var veiwModel = _context.EntityMaintenance.GetEntityInfo<TResult>(); |
|
|
|
var exp = (queryBuilder.JoinExpression as LambdaExpression); |
|
|
|
List<KeyValuePair<string, object>> selectItems = new List<KeyValuePair<string, object>>(); |
|
|
|
foreach (var viewColumn in veiwModel.Columns) |
|
|
|
{ |
|
|
|
var exParsmeters = exp.Parameters.Select(it => new { shortName = it.Name, type = it.Type }).ToList(); |
|
|
|
foreach (var expPars in exParsmeters) |
|
|
|
{ |
|
|
|
var columns = _context.EntityMaintenance.GetEntityInfo(expPars.type).Columns.Where(it => it.IsIgnore == false); |
|
|
|
var joinModelDbColumns = columns.Select(it => |
|
|
|
new { asName = it.PropertyName, dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelProperties = columns.Select(it => |
|
|
|
new { asName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelDbColumnsWithType = columns.Select(it => |
|
|
|
new { asName = (expPars.type.Name + it.PropertyName), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelPropertiesWithTye = columns.Select(it => |
|
|
|
new { asName = (expPars.type.Name + _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type)), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelDbColumns_WithType = columns.Select(it => |
|
|
|
new { asName = (expPars.type.Name +"_"+ it.PropertyName), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelProperties_WithType = columns.Select(it => |
|
|
|
new { asName = (expPars.type.Name +"_"+ _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type)), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelDbColumnsWithSN = columns.Select(it => |
|
|
|
new { asName = (expPars.shortName + it.PropertyName), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
var joinModelPropertiesWithSN = columns.Select(it => |
|
|
|
new { asName = (expPars.shortName + _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type)), dbName = _context.EntityMaintenance.GetDbColumnName(it.PropertyName, expPars.type) }).ToList(); |
|
|
|
|
|
|
|
if (joinModelDbColumns.Any(it => it.asName.Equals(viewColumn.PropertyName,StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
foreach (var viewColumns in veiwModel.Columns) |
|
|
|
{ |
|
|
|
var value = joinModelDbColumns.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName,value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelProperties.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
var isbreak = false; |
|
|
|
foreach (var expPars in exParsmeters) |
|
|
|
{ |
|
|
|
var value = joinModelProperties.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelDbColumnsWithType.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
if (isbreak) |
|
|
|
{ |
|
|
|
var value = joinModelDbColumnsWithType.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelPropertiesWithTye.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
var entityInfo = _context.EntityMaintenance.GetEntityInfo(expPars.type); |
|
|
|
var columns = entityInfo.Columns.Where(it => it.IsIgnore == false); |
|
|
|
var list = columns.Select(it => { |
|
|
|
var array = new string[] |
|
|
|
{ |
|
|
|
var value = joinModelPropertiesWithTye.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
it.PropertyName, |
|
|
|
it.DbColumnName, |
|
|
|
|
|
|
|
if (joinModelDbColumns_WithType.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
{ |
|
|
|
var value = joinModelDbColumns_WithType.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelProperties_WithType.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
{ |
|
|
|
var value = joinModelProperties_WithType.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelDbColumnsWithSN.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
expPars.type.Name+it.PropertyName, |
|
|
|
expPars.type.Name+it.DbColumnName, |
|
|
|
|
|
|
|
expPars.type.Name+"_"+it.PropertyName, |
|
|
|
expPars.type.Name+"_"+it.DbColumnName, |
|
|
|
|
|
|
|
expPars.shortName+it.PropertyName, |
|
|
|
expPars.shortName+it.DbColumnName, |
|
|
|
}; |
|
|
|
return new { it, array }; |
|
|
|
}).ToList(); |
|
|
|
var columnInfo= list.FirstOrDefault(y => y.array.Select(z=>z.ToLower()).Contains(viewColumns.PropertyName.ToLower())); |
|
|
|
if (columnInfo != null) |
|
|
|
{ |
|
|
|
var value = joinModelDbColumnsWithSN.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (joinModelPropertiesWithSN.Any(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase))) |
|
|
|
JoinMapper joinMapper = new JoinMapper() |
|
|
|
{ |
|
|
|
var value = joinModelPropertiesWithSN.First(it => it.asName.Equals(viewColumn.PropertyName, StringComparison.CurrentCultureIgnoreCase)); |
|
|
|
if (viewColumn.PropertyName.Equals(value.asName, StringComparison.CurrentCultureIgnoreCase)) |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName, value)); |
|
|
|
break; |
|
|
|
asName=viewColumns.PropertyName, |
|
|
|
dbName=columnInfo.it.DbColumnName |
|
|
|
}; |
|
|
|
selectItems.Add(new KeyValuePair<string, object>(expPars.shortName,joinMapper)); |
|
|
|
isbreak = true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|