Ich versuche, einen Ausdruck von LINQ/SQL Server aufgelöst zu bekommen, aber es scheint, es kann nicht mit dem Ausdruck umgehen und überspringt es nur ganz (es funktioniert jedoch auf einem In-Memory-Dataset) .Ausdruck nicht von SQL Server ausgewertet
public static Func<TSource, bool> WhereNotNullClause<TSource>(string propertyName)
{
var type = typeof(TSource);
var expression = Expression.Parameter(type, "p");
var propertyNameReference = Expression.Property(expression, propertyName);
var propertyValueReference = Expression.Constant(null);
return Expression.Lambda<Func<TSource, bool>>(
Expression.NotEqual(propertyNameReference, propertyValueReference),
new[] { expression }).Compile();
}
wie folgt aufgerufen:
var whereNotNullSelector = Expressions.WhereNotNullClause<ContactItem>("property");
var contactItems = context.ContactItems.Where(whereNotNullSelector).ToList();
Die SQL erzeugt beinhaltet nicht die where-Klausel, so dass die in dem ausgeführt wird, scheint nach der Abfrage löst. Auf welche Dinge muss ich noch achten, bevor ich dies richtig lösen kann?