private void ResolveMember() { var exp = expression as MemberExpression; ThrowTrue(exp.Expression == null); var childExpression = exp.Expression; MapperExpression mapper = GetMapper(exp); var fillInfo = GetFillInfo(childExpression, mapper); var mappingFild1Info = GetMappingFild1Info(childExpression, mapper); var mappingFild1Info2 = GetMappingFild2Info(childExpression, mapper); var SelectInfo = GetSelectInfo(expression); var entity = this.context.EntityMaintenance.GetEntityInfo(childExpression.Type); var isExMapper = mappingFild1Info2 != null; var isFillFild1SameType = fillInfo.Type == mappingFild1Info.Type; var isSameProperty = false; if (isExMapper) { ExtMapper(); } else if (isSameProperty) { } else if (isFillFild1SameType) { oneToMany(); } else { oneToOne(fillInfo, mappingFild1Info, mappingFild1Info2, SelectInfo); } }
private MapperExpressionInfo GetMappingFild2Info(Expression childExpression, MapperExpression mapper) { if (mapper.MappingField2Expression == null) { return(null); } var exp = mapper.MappingField2Expression; var field = (exp as LambdaExpression).Body; if (field is UnaryExpression) { field = (field as UnaryExpression).Operand; } var type = ((field as MemberExpression).Expression).Type; this.context.InitMappingInfo(type); var name = (field as MemberExpression).Member.Name; var entity = this.context.EntityMaintenance.GetEntityInfo(type); var fieldName = entity.Columns.First(it => it.PropertyName == name).DbColumnName; return(new MapperExpressionInfo() { Type = type, FieldName = fieldName }); }
private MapperExpressionInfo GetMappingFild1Info(Expression childExpression, MapperExpression mapper) { var exp = mapper.MappingField1Expression; var field = (exp as LambdaExpression).Body; if (field is UnaryExpression) { field = (field as UnaryExpression).Operand; } var type = ((field as MemberExpression).Expression).Type; this.context.InitMappingInfo(type); var name = (field as MemberExpression).Member.Name; var entity = this.context.EntityMaintenance.GetEntityInfo(type); var fieldName = entity.Columns.First(it => it.PropertyName == name).DbColumnName; var array = (field as MemberExpression).ToString().Split('.').ToList(); array[array.Count() - 1] = fieldName; var filedString = string.Join(".", array); return(new MapperExpressionInfo() { Type = type, FieldName = fieldName, FieldString = filedString, EntityInfo = entity }); }
private MapperExpressionInfo GetFillInfo(Expression childExpression, MapperExpression mapper) { this.querybuiler = mapper.QueryBuilder; this.context = mapper.Context; this.sqlBuilder = mapper.SqlBuilder; if (this.querybuiler.TableShortName.IsNullOrEmpty()) { this.querybuiler.TableShortName = (childExpression as MemberExpression).Expression.ToString(); } this.context.InitMappingInfo(childExpression.Type); return(new MapperExpressionInfo() { EntityInfo = this.context.EntityMaintenance.GetEntityInfo(childExpression.Type) }); }
private void ResolveList() { var methodExpression = expression as MethodCallExpression; var callName = methodExpression.Method.Name; var exp = methodExpression.Arguments[0] as MemberExpression; ThrowTrue(exp == null); var childExpression = exp; MapperExpression mapper = GetMapperMany(exp); var fillInfo = GetFillInfoMany(childExpression, mapper); var mappingFild1Info = GetMappingFild1ManyInfo(childExpression, mapper); var mappingFild1Info2 = GetMappingFild2Info(childExpression, mapper); //var SelectInfo = GetSelectInfo(expression); this.context.InitMappingInfo(childExpression.Expression.Type); var entity = this.context.EntityMaintenance.GetEntityInfo(childExpression.Expression.Type); oneToMany(callName, entity, childExpression.Expression.ToString(), fillInfo, mappingFild1Info, mappingFild1Info2); }