public void SetUp()
        {
            _generator    = new UniqueIdentifierGenerator();
            _context      = SqlStatementModelObjectMother.CreateSqlPreparationContext();
            _defaultStage = new DefaultSqlPreparationStage(
                CompoundMethodCallTransformerProvider.CreateDefault(), ResultOperatorHandlerRegistry.CreateDefault(), _generator);

            _mainFromClause = ExpressionHelper.CreateMainFromClause <Cook>();
            _selectClause   = ExpressionHelper.CreateSelectClause(_mainFromClause);
            _orderByClause  = ExpressionHelper.CreateOrderByClause();
            _queryModel     = new QueryModel(_mainFromClause, _selectClause);

            _stageMock          = MockRepository.GenerateStrictMock <ISqlPreparationStage>();
            _visitor            = new TestableSqlPreparationQueryModelVisitor(_context, _stageMock);
            _visitorPartialMock = MockRepository.GeneratePartialMock <TestableSqlPreparationQueryModelVisitor> (_context, _stageMock);
        }
        public void GetTransformer()
        {
            var registryMock = MockRepository.GenerateStrictMock <IMethodCallTransformerProvider>();
            var methodCallTransformerRegistry = new CompoundMethodCallTransformerProvider(registryMock);
            var methodCallExpression          = ExpressionHelper.CreateMethodCallExpression <Cook>();
            var fakeTransformer = new ContainsFulltextMethodCallTransformer();

            registryMock
            .Expect(mock => mock.GetTransformer(methodCallExpression))
            .Return(fakeTransformer);
            registryMock.Replay();

            var result = methodCallTransformerRegistry.GetTransformer(methodCallExpression);

            registryMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(fakeTransformer));
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        public QueryExecutor(
            IMappingResolver mappingResolver,
            IQueryResultRetriever resultRetriever,
            ResultOperatorHandlerRegistry resultOperatorHandlerRegistry,
            CompoundMethodCallTransformerProvider methodCallTransformerProvider,
            bool showQuery)
        {
            ArgumentUtility.CheckNotNull("mappingResolver", mappingResolver);
            ArgumentUtility.CheckNotNull("resultRetriever", resultRetriever);
            ArgumentUtility.CheckNotNull("resultOperatorHandlerRegistry", resultOperatorHandlerRegistry);
            ArgumentUtility.CheckNotNull("methodCallTransformerProvider", methodCallTransformerProvider);

            _mappingResolver = mappingResolver;
            _resultRetriever = resultRetriever;

            _resultOperatorHandlerRegistry = resultOperatorHandlerRegistry;
            _methodCallTransformerProvider = methodCallTransformerProvider;

            _showQuery = showQuery;
        }
Ejemplo n.º 5
0
        public RelinqNorthwindDataProvider()
        {
            _manager   = new NorthwindConnectionManager();
            _context   = new NorthwindDataContext(_manager.GetConnectionString());
            _resolver  = new MappingResolver(_context.Mapping);
            _retriever = new QueryResultRetriever(_manager, _resolver);

            _resultOperatorHandlerRegistry = ResultOperatorHandlerRegistry.CreateDefault();

            var methodBasedTransformerRegistry = MethodInfoBasedMethodCallTransformerRegistry.CreateDefault();
            var nameBasedTransformerRegistry   = NameBasedMethodCallTransformerRegistry.CreateDefault();

            _methodCallTransformerProvider = new CompoundMethodCallTransformerProvider(methodBasedTransformerRegistry, nameBasedTransformerRegistry);
            methodBasedTransformerRegistry.Register(
                typeof(SqlMethods).GetMethod("Like", new[] { typeof(string), typeof(string) }),
                new LikeMethodCallTransformer());
            methodBasedTransformerRegistry.Register(DateDiffDayMethodCallTransformer.SupportedMethods, new DateDiffDayMethodCallTransformer());

            foreach (var userDefinedFunction in _context.GetType().GetMethods().Where(mi => mi.IsDefined(typeof(FunctionAttribute), false)))
            {
                methodBasedTransformerRegistry.Register(userDefinedFunction, new UserDefinedFunctionTransformer());
            }

            var customNodeTypeRegistry = new MethodInfoBasedNodeTypeRegistry();

            customNodeTypeRegistry.Register(new[] { typeof(EntitySet <>).GetMethod("Contains") }, typeof(ContainsExpressionNode));

            var nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider();

            nodeTypeProvider.InnerProviders.Add(customNodeTypeRegistry);

            var transformerRegistry  = ExpressionTransformerRegistry.CreateDefault();
            var processor            = ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry);
            var expressionTreeParser = new ExpressionTreeParser(nodeTypeProvider, processor);

            _queryParser = new QueryParser(expressionTreeParser);

            _executor = new QueryExecutor(_resolver, _retriever, _resultOperatorHandlerRegistry, _methodCallTransformerProvider, false);
        }
Ejemplo n.º 6
0
 private QueryExecutor CreateQueryExecutor(IQueryResultRetriever retrieverMock)
 {
     return(new QueryExecutor(_resolverStub, retrieverMock, ResultOperatorHandlerRegistry.CreateDefault(), CompoundMethodCallTransformerProvider.CreateDefault(), false));
 }