public override IObjectModel ToNewObjectModel(DbSqlQueryExpression sqlQuery, DbTable table, DbMainTableExpression dependentTable, bool ignoreFilters) { DbColumnAccessExpression cae = ObjectModelHelper.ParseColumnAccessExpression(sqlQuery, table, this.Expression); PrimitiveObjectModel objectModel = new PrimitiveObjectModel(this.ObjectType, cae); objectModel.NullChecking = ObjectModelHelper.TryGetOrAddNullChecking(sqlQuery, table, this.NullChecking); return(objectModel); }
public override IObjectActivatorCreator GenarateObjectActivatorCreator(DbSqlQueryExpression sqlQuery) { int ordinal; ordinal = ObjectModelHelper.TryGetOrAddColumn(sqlQuery, this.Expression).Value; PrimitiveObjectActivatorCreator activatorCreator = new PrimitiveObjectActivatorCreator(this.ObjectType, ordinal); activatorCreator.CheckNullOrdinal = ObjectModelHelper.TryGetOrAddColumn(sqlQuery, this.NullChecking); return(activatorCreator); }
public IObjectModel ToNewObjectModel(DbSqlQueryExpression sqlQuery, DbTable table, DbMainTableExpression dependentTable) { ComplexObjectModel newModel = new ComplexObjectModel(this.ConstructorDescriptor); newModel.DependentTable = dependentTable; newModel.IncludeCollections.AddRange(this.IncludeCollections); foreach (var kv in this.PrimitiveConstructorParameters) { ParameterInfo pi = kv.Key; DbExpression exp = kv.Value; DbColumnAccessExpression cae = null; cae = ObjectModelHelper.ParseColumnAccessExpression(sqlQuery, table, exp, pi.Name); newModel.AddConstructorParameter(pi, cae); } foreach (var kv in this.ComplexConstructorParameters) { ParameterInfo pi = kv.Key; IObjectModel val = kv.Value; ComplexObjectModel complexMemberModel = val.ToNewObjectModel(sqlQuery, table, dependentTable) as ComplexObjectModel; newModel.AddConstructorParameter(pi, complexMemberModel); } foreach (var kv in this.PrimitiveMembers) { MemberInfo member = kv.Key; DbExpression exp = kv.Value; DbColumnAccessExpression cae = ObjectModelHelper.ParseColumnAccessExpression(sqlQuery, table, exp, member.Name); newModel.AddPrimitiveMember(member, cae); if (exp == this.PrimaryKey) { newModel.PrimaryKey = cae; if (this.NullChecking == this.PrimaryKey) { newModel.NullChecking = cae; } } } foreach (var kv in this.ComplexMembers) { MemberInfo member = kv.Key; IObjectModel val = kv.Value; ComplexObjectModel complexMemberModel = val.ToNewObjectModel(sqlQuery, table, dependentTable) as ComplexObjectModel; newModel.AddComplexMember(member, complexMemberModel); } if (newModel.NullChecking == null) { newModel.NullChecking = ObjectModelHelper.TryGetOrAddNullChecking(sqlQuery, table, this.NullChecking); } return(newModel); }
public IObjectActivatorCreator GenarateObjectActivatorCreator(DbSqlQueryExpression sqlQuery) { ComplexObjectActivatorCreator activatorCreator = new ComplexObjectActivatorCreator(this.ConstructorDescriptor); foreach (var kv in this.PrimitiveConstructorParameters) { ParameterInfo pi = kv.Key; DbExpression exp = kv.Value; int ordinal; ordinal = ObjectModelHelper.TryGetOrAddColumn(sqlQuery, exp, pi.Name).Value; if (exp == this.NullChecking) { activatorCreator.CheckNullOrdinal = ordinal; } activatorCreator.ConstructorParameters.Add(pi, ordinal); } foreach (var kv in this.ComplexConstructorParameters) { ParameterInfo pi = kv.Key; IObjectModel val = kv.Value; IObjectActivatorCreator complexMappingMember = val.GenarateObjectActivatorCreator(sqlQuery); activatorCreator.ConstructorComplexParameters.Add(pi, complexMappingMember); } foreach (var kv in this.PrimitiveMembers) { MemberInfo member = kv.Key; DbExpression exp = kv.Value; int ordinal; ordinal = ObjectModelHelper.TryGetOrAddColumn(sqlQuery, exp, member.Name).Value; if (exp == this.NullChecking) { activatorCreator.CheckNullOrdinal = ordinal; } activatorCreator.PrimitiveMembers.Add(member, ordinal); } foreach (var kv in this.ComplexMembers) { IObjectActivatorCreator complexMemberActivatorCreator = kv.Value.GenarateObjectActivatorCreator(sqlQuery); activatorCreator.ComplexMembers.Add(kv.Key, complexMemberActivatorCreator); } foreach (var kv in this.CollectionMembers) { IObjectActivatorCreator collectionMemberActivatorCreator = kv.Value.GenarateObjectActivatorCreator(sqlQuery); activatorCreator.CollectionMembers.Add(kv.Key, collectionMemberActivatorCreator); } if (activatorCreator.CheckNullOrdinal == null) { activatorCreator.CheckNullOrdinal = ObjectModelHelper.TryGetOrAddColumn(sqlQuery, this.NullChecking); } return(activatorCreator); }