je le code suivant:LINQ dynamique Où - Ne pas ajouter la clause
public OTestTable GetTestCode(Func<TestTable, bool> whereClause)
{
return CoreContext.TestTables.Where(whereClause).Select(TestTableMap.DataToObject).FirstOrDefault();
}
CoreContext est mon contexte de données (qui est initialisé dans une classe de base)
Mon TestTableMap se présente comme suit:
public class TestTableMap
{
public static readonly Func<TestTable, OTestTable> DataToObject = mapper =>
new OTestTable
{
Code = mapper.mycode
};
}
Ensuite, dans ma méthode d'affaires que je donne les résultats suivants:
public OTestTable GetTestCode(string code)
{
return QueryEngine.GetTestCode(id => id.mycode == code);
}
Depuis mon programme principal, j'appelle GetTestCode avec une valeur de chaîne.
Quand je regarde profileur SQL, je reçois les éléments suivants:
SELECT [t0].[mycode]
FROM [dbo].[TestTable] AS [t0]
Il n'a pas la clause where jointe à la requête SQL. Si j'ajoute la clause where au LINQ comme var query = de c dans DataContext.TestTable où c.mycode == '' select c;
Il ajoutera la clause where.
Cependant, quand j'exécute mon code, il va retourner l'enregistrement correct, mais il semble que je retire tous les enregistrements de la base de données et le filtrage dans mon code (ce qui ne devrait pas arriver).
Des pensées avec ce que je fais mal?
Merci
c'était tout !! J'ai complètement oublié d'utiliser l'Expression !! Merci beaucoup! – CodeLikeBeaker