public void VisitMemberExpression() { var memberExpression = Expression.MakeMemberAccess(Expression.Constant(new Cook()), typeof(Cook).GetProperty("IllnessDays")); var result = SqlPreparationFromExpressionVisitor.AnalyzeFromExpression( memberExpression, _stageMock, _generator, _methodCallTransformerProvider, _context, _tableGenerator, _someOrderingExtractionPolicy); Assert.That(result.SqlTable, Is.TypeOf(typeof(SqlTable))); Assert.That(result.SqlTable.TableInfo, Is.TypeOf(typeof(SqlJoinedTable))); Assert.That(((SqlJoinedTable)result.SqlTable.TableInfo).JoinInfo, Is.TypeOf(typeof(UnresolvedCollectionJoinInfo))); Assert.That( ((UnresolvedCollectionJoinInfo)((SqlJoinedTable)result.SqlTable.TableInfo).JoinInfo).SourceExpression, Is.EqualTo(memberExpression.Expression)); Assert.That( ((UnresolvedCollectionJoinInfo)((SqlJoinedTable)result.SqlTable.TableInfo).JoinInfo).MemberInfo, Is.EqualTo(memberExpression.Member)); var expectedWherecondition = new JoinConditionExpression(((SqlJoinedTable)result.SqlTable.TableInfo)); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedWherecondition, result.WhereCondition); }
public void VisitJoinConditionExpression() { var resolvedTableInfo = new ResolvedSimpleTableInfo(typeof(Cook), "CookTable", "c"); var leftKey = new SqlColumnDefinitionExpression(typeof(Cook), "c", "ID", false); var rightKey = new SqlColumnDefinitionExpression(typeof(Cook), "a", "FK", false); var joinInfo = new ResolvedJoinInfo(resolvedTableInfo, Expression.Equal(leftKey, rightKey)); var sqlTable = new SqlJoinedTable(joinInfo, JoinSemantics.Left); var joinConditionExpression = new JoinConditionExpression(sqlTable); _entityIdentityResolverMock .Expect( mock => mock.ResolvePotentialEntityComparison( Arg <BinaryExpression> .Matches(b => b.Left == leftKey && b.Right == rightKey))) .Return(null) .WhenCalled(mi => mi.ReturnValue = mi.Arguments[0]); _compoundComparisonSplitterMock .Expect( mock => mock.SplitPotentialCompoundComparison( Arg <BinaryExpression> .Matches(b => b.Left == leftKey && b.Right == rightKey))) .Return(null) .WhenCalled(mi => mi.ReturnValue = mi.Arguments[0]); var result = _visitor.Visit(joinConditionExpression); _entityIdentityResolverMock.VerifyAllExpectations(); _compoundComparisonSplitterMock.VerifyAllExpectations(); var expectedExpression = Expression.Equal(leftKey, rightKey); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedExpression, result); }
public virtual Expression VisitJoinCondition(JoinConditionExpression expression) { ArgumentUtility.CheckNotNull("expression", expression); var resolvedLeftJoinInfo = expression.JoinedTable.JoinInfo.GetResolvedJoinInfo(); return(Visit(resolvedLeftJoinInfo.JoinCondition)); }
public void ToString_Resolved() { var resolvedJoinInfo = new ResolvedJoinInfo(new ResolvedSimpleTableInfo(typeof(Cook), "CookTable", "c"), Expression.Constant(true)); var expression = new JoinConditionExpression(new SqlJoinedTable(resolvedJoinInfo, JoinSemantics.Left)); var result = expression.ToString(); Assert.That(result, Is.EqualTo("CONDITION(LEFT JOIN [CookTable] [c] ON True)")); }
public void SetUp() { var sqlTable = SqlStatementModelObjectMother.CreateSqlJoinedTable_WithUnresolvedJoinInfo(); _expression = new JoinConditionExpression(sqlTable); }