meilleur pour décrire ce dans le code ...Puis-je citer une requête compilée en tant que source de données dans une requête compilée?
Je possède ce
public class A<T>
{
public static class Queries
{
public static Func<DataContext, int, T>Get =
CompiledQuery.Compile<DataContext, int, T>(
(DataContextdb, int i) => (from t in db.GetTable<T>()
where t.ID == i
select t).SingleOrDefault());
}
}
Puis-je créer une nouvelle classe et requête, comme ça ...
public class B<T>:A<t>
{
public static class BQueries
{
public static Func<DataContext, int, T> Get =
CompiledQuery.Compile<DataContext, int, T>(
(DataContext db, int id) => (from t in A.Queries.Get(db, id)
where !t.Item.Deleted
select t).SingleOrDefault());
}
public abstract TrackingItem Item;
}
Tout ce que je veux do compile une nouvelle requête basée sur l'original qui ajoute quelques contraintes. Ceci au lieu d'exécuter deux requêtes
Eh bien, il en fait des retours T –
Ah je vois maintenant ... c'est logique. Je tirais pour une exécution différée. Est-il même logique de compiler SingleOrDefault dans une requête? –
C'est toujours un compromis entre la convivialité et le coût de performance de l'analyse de l'expression. J'ai tendance à différer le plus longtemps possible, mais cela dépend de votre cas d'utilisation. – dahlbyk