public override SqlFragment Visit(DbPropertyExpression expression)
{
propertyLevel++;
PropertyFragment fragment = expression.Instance.Accept(this) as PropertyFragment;
fragment.Properties.Add(expression.Property.Name);
propertyLevel--;
// if we are not at the top level property then just return
if (propertyLevel > 0)
{
return(fragment);
}
// we are at the top level property so now we can do our work
ColumnFragment column = GetColumnFromPropertyTree(fragment);
for (int i = fragment.Properties.Count - 1; i >= 0; --i)
{
InputFragment inputFragment = scope.GetFragment(fragment.Properties[i]);
if (inputFragment != null)
{
column.TableAlias = inputFragment.Name;
break;
}
}
return(column);
}