public Expression ResolvePotentialEntity (Expression expression)
{
ArgumentUtility.CheckNotNull ("expression", expression);
var strippedExpression = StripConversions (expression);
var namedExpression = strippedExpression as NamedExpression;
if (namedExpression != null)
{
var result = ResolvePotentialEntity (namedExpression.Expression);
if (result != namedExpression.Expression)
return new NamedExpression (namedExpression.Name, result);
return expression;
}
var entityExpression = strippedExpression as SqlEntityExpression;
if (entityExpression != null)
return entityExpression.GetIdentityExpression ();
var entityConstantExpression = strippedExpression as SqlEntityConstantExpression;
if (entityConstantExpression != null)
return entityConstantExpression.IdentityExpression;
var entityRefMemberExpression = strippedExpression as SqlEntityRefMemberExpression;
if (entityRefMemberExpression != null)
return GetIdentityExpressionForReferencedEntity (entityRefMemberExpression);
var sqlSubStatementExpression = strippedExpression as SqlSubStatementExpression;
if (sqlSubStatementExpression != null)
return CheckAndSimplifyEntityWithinSubStatement (sqlSubStatementExpression);
return expression;
}