public IMappingObjectExpression ToNewObjectExpression(DbSqlQueryExpression sqlQuery, DbTable table) { MappingObjectExpression newMoe = new MappingObjectExpression(this.ConstructorDescriptor); foreach (var kv in this.MappingConstructorParameters) { ParameterInfo pi = kv.Key; DbExpression exp = kv.Value; DbColumnAccessExpression cae = null; cae = MappingObjectExpressionHelper.ParseColumnAccessExpression(sqlQuery, table, exp, pi.Name); newMoe.AddMappingConstructorParameter(pi, cae); } foreach (var kv in this.ComplexConstructorParameters) { ParameterInfo pi = kv.Key; IMappingObjectExpression val = kv.Value; IMappingObjectExpression complexMappingMember = val.ToNewObjectExpression(sqlQuery, table); newMoe.AddComplexConstructorParameter(pi, complexMappingMember); } foreach (var kv in this.MappingMembers) { MemberInfo member = kv.Key; DbExpression exp = kv.Value; DbColumnAccessExpression cae = null; cae = MappingObjectExpressionHelper.ParseColumnAccessExpression(sqlQuery, table, exp, member.Name); newMoe.AddMappingMemberExpression(member, cae); if (exp == this.PrimaryKey) { newMoe.PrimaryKey = cae; if (this.NullChecking == this.PrimaryKey) { newMoe.NullChecking = cae; } } } foreach (var kv in this.ComplexMembers) { MemberInfo member = kv.Key; IMappingObjectExpression val = kv.Value; IMappingObjectExpression complexMappingMember = val.ToNewObjectExpression(sqlQuery, table); newMoe.AddComplexMemberExpression(member, complexMappingMember); } if (newMoe.NullChecking == null) { newMoe.NullChecking = MappingObjectExpressionHelper.TryGetOrAddNullChecking(sqlQuery, table, this.NullChecking); } return(newMoe); }