private SqlCommandData GenerateSqlCommand(QueryModel queryModel) { ISqlPreparationContext preparationContext = new SqlPreparationContext(new SqlStatementBuilder()); IMappingResolutionContext mappingResolutionContext = new MappingResolutionContext(); var generator = new UniqueIdentifierGenerator(); var preparationStage = new DefaultSqlPreparationStage(_methodCallTransformerProvider, _resultOperatorHandlerRegistry, generator); var preparedStatement = preparationStage.PrepareSqlStatement(queryModel, preparationContext); var resolutionStage = new DefaultMappingResolutionStage(_mappingResolver, generator); var resolvedStatement = resolutionStage.ResolveSqlStatement(preparedStatement, mappingResolutionContext); var builder = new SqlCommandBuilder(); var generationStage = new DefaultSqlGenerationStage(); generationStage.GenerateTextForOuterSqlStatement(builder, resolvedStatement); var command = builder.GetCommand(); if (_showQuery) { Console.WriteLine(command.CommandText); Console.WriteLine(string.Join(", ", command.Parameters.Select(p => p.Name + "=" + p.Value))); Console.WriteLine(command.GetInMemoryProjection <object>()); } return(command); }
protected SqlCommandData GenerateSql(QueryModel queryModel) { var generator = new UniqueIdentifierGenerator(); var resultOperatorHandlerRegistry = ResultOperatorHandlerRegistry.CreateDefault(); var defaultSqlPreparationStage = new DefaultSqlPreparationStage(CompoundMethodCallTransformerProvider.CreateDefault(), resultOperatorHandlerRegistry, generator); var sqlStatement = defaultSqlPreparationStage.PrepareSqlStatement(queryModel, null); var resolver = new MappingResolverStub(); var mappingResolutionStage = new DefaultMappingResolutionStage(resolver, generator); var mappingResolutionContext = new MappingResolutionContext(); var newSqlStatement = mappingResolutionStage.ResolveSqlStatement(sqlStatement, mappingResolutionContext); var commandBuilder = new SqlCommandBuilder(); var sqlGenerationStage = new DefaultSqlGenerationStage(); sqlGenerationStage.GenerateTextForOuterSqlStatement(commandBuilder, newSqlStatement); return(commandBuilder.GetCommand()); }
public void ResolveSqlStatement() { var sqlTable = SqlStatementModelObjectMother.CreateSqlTable_WithUnresolvedTableInfo(typeof(Cook)); var tableReferenceExpression = new SqlTableReferenceExpression(new SqlTable(_fakeResolvedSimpleTableInfo, JoinSemantics.Inner)); var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatement(tableReferenceExpression, new[] { sqlTable }); var fakeEntityExpression = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression(typeof(Cook)); _resolverMock .Expect(mock => mock.ResolveTableInfo((UnresolvedTableInfo)((SqlTable)sqlStatement.SqlTables[0]).TableInfo, _uniqueIdentifierGenerator)) .Return(_fakeResolvedSimpleTableInfo); _resolverMock .Expect(mock => mock.ResolveSimpleTableInfo(tableReferenceExpression.SqlTable.GetResolvedTableInfo(), _uniqueIdentifierGenerator)) .Return(fakeEntityExpression); _resolverMock.Replay(); var newSqlStatment = _stage.ResolveSqlStatement(sqlStatement, _mappingResolutionContext); _resolverMock.VerifyAllExpectations(); Assert.That(((SqlTable)newSqlStatment.SqlTables[0]).TableInfo, Is.SameAs(_fakeResolvedSimpleTableInfo)); Assert.That(newSqlStatment.SelectProjection, Is.SameAs(fakeEntityExpression)); }