public override DbExpression Visit(DbIsNullExpression expression) { DebugCheck.NotNull(expression); var propertyExpression = expression.Argument as DbPropertyExpression; if (propertyExpression != null) { var parameter = GetParameter((EdmProperty)propertyExpression.Property, originalValue: true); if (parameter != null) { if (parameter.Item2) { // Current value, remove condition return(null); } var parameterReferenceExpression = new DbParameterReferenceExpression(parameter.Item1.TypeUsage, parameter.Item1.Name); var equalityPredicate = propertyExpression.Equal(parameterReferenceExpression); var nullPredicate = propertyExpression.IsNull().And(parameterReferenceExpression.IsNull()); return(equalityPredicate.Or(nullPredicate)); } } return(base.Visit(expression)); }
public override DbExpression Visit(DbIsNullExpression expression) { DbPropertyExpression left = expression.Argument as DbPropertyExpression; if (left != null) { Tuple <FunctionParameter, bool> parameter = this.GetParameter((EdmProperty)left.Property, true); if (parameter != null) { if (parameter.Item2) { return((DbExpression)null); } DbParameterReferenceExpression referenceExpression = new DbParameterReferenceExpression(parameter.Item1.TypeUsage, parameter.Item1.Name); return((DbExpression)left.Equal((DbExpression)referenceExpression).Or((DbExpression)left.IsNull().And((DbExpression)referenceExpression.IsNull()))); } } return(base.Visit(expression)); }