public static Expression ResolveExpression( Expression expression, IMappingResolver resolver, IMappingResolutionStage stage, IMappingResolutionContext context, UniqueIdentifierGenerator generator) { ArgumentUtility.CheckNotNull("expression", expression); ArgumentUtility.CheckNotNull("resolver", resolver); ArgumentUtility.CheckNotNull("stage", stage); ArgumentUtility.CheckNotNull("context", context); ArgumentUtility.CheckNotNull("generator", generator); var entityIdentityResolver = new EntityIdentityResolver(stage, resolver, context); var comparisonSplitter = new CompoundExpressionComparisonSplitter(); var namedExpressionCombiner = new NamedExpressionCombiner(context); var groupAggregateSimplifier = new GroupAggregateSimplifier(stage, context); var visitor1 = new ResolvingExpressionVisitor( resolver, stage, context, generator, entityIdentityResolver, comparisonSplitter, namedExpressionCombiner, groupAggregateSimplifier, false); var result1 = visitor1.Visit(expression); var visitor2 = new ResolvingExpressionVisitor( resolver, stage, context, generator, entityIdentityResolver, comparisonSplitter, namedExpressionCombiner, groupAggregateSimplifier, true); var result2 = visitor2.Visit(result1); return(result2); }
public static Expression ResolveExpression ( Expression expression, IMappingResolver resolver, IMappingResolutionStage stage, IMappingResolutionContext context, UniqueIdentifierGenerator generator) { ArgumentUtility.CheckNotNull ("expression", expression); ArgumentUtility.CheckNotNull ("resolver", resolver); ArgumentUtility.CheckNotNull ("stage", stage); ArgumentUtility.CheckNotNull ("context", context); ArgumentUtility.CheckNotNull ("generator", generator); var entityIdentityResolver = new EntityIdentityResolver (stage, resolver, context); var comparisonSplitter = new CompoundExpressionComparisonSplitter(); var namedExpressionCombiner = new NamedExpressionCombiner (context); var groupAggregateSimplifier = new GroupAggregateSimplifier (stage, context); var visitor1 = new ResolvingExpressionVisitor ( resolver, stage, context, generator, entityIdentityResolver, comparisonSplitter, namedExpressionCombiner, groupAggregateSimplifier, false); var result1 = visitor1.VisitExpression (expression); var visitor2 = new ResolvingExpressionVisitor ( resolver, stage, context, generator, entityIdentityResolver, comparisonSplitter, namedExpressionCombiner, groupAggregateSimplifier, true); var result2 = visitor2.VisitExpression (result1); return result2; }
public void SetUp () { _stageMock = MockRepository.GenerateStrictMock<IMappingResolutionStage>(); _resolverMock = MockRepository.GenerateStrictMock<IMappingResolver>(); _context = new MappingResolutionContext(); _entityIdentityResolver = new EntityIdentityResolver (_stageMock, _resolverMock, _context); _entityExpression = SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression (typeof (Cook), primaryKeyType: typeof (int)); _entityConstantExpression = new SqlEntityConstantExpression (typeof (Cook), new Cook (), Expression.Constant (0)); _entityRefMemberExpression = new SqlEntityRefMemberExpression ( SqlStatementModelObjectMother.CreateSqlEntityDefinitionExpression (typeof (Kitchen)), typeof (Kitchen).GetProperty ("Cook")); }