Message modifiérequête LINQ expression réutilisation
Serait-ce possible?
ont une expression de requête qui est précompilée
i.e.
private static Func<SmwrDataContext, int, IQueryable<Xyz>> _validXyzs =
CompiledQuery.Compile((Context context, int Id) =>
from xyz in _db.XYZs
join abc in _db.ABCs on xyz.Id equals abc.Id
where xyz.TypeId = id && xyz.Flag && abc.Flag
select xyz);
J'avais d'abord déclaré cela dans le même dépôt accédait directement, n'a eu aucun problème à consommer.
public List<MyItem> GetItemsForValueRange(int xyzTypeId, double floor, double ceiling)
{
return (from xyx from _validXyzs (_db, xyzTypeId)
join num from _db.numbers xyz.ID equals num.lettersId
where
num.Value >= floor && num.Value <= ceiling
num.Flag
select new {
Name = xyz.Name,
Value = num.Value
}).ToList();
}
plus tard remaniée avec la variable statique dans une classe différente de celle du même requête était comsumed par plusieurs référentiels,
poste de déclaration refactoring était la suivante (_filteredXyzs) se trouve dans la même classe que le procédé rend disponible pour la consommation.
Public static IQueryable<Xyz> GetValidXyzs(Context context, int xyzTypeId)
{
return from _filteredXyzs(context, id);
}
dévorait post-it refactoring comme [RepositoryName] .GetValidXyzs dans un contexte de requête particulière, mais finissent par le suivant "System.StackOverflowException » a eu lieu dans System.Data.Linq.dll"
L'entité Xyz est basée sur le sommet, sa disponibilité étant déterminée par les indicateurs d'autres types dans les tables principales. Avec Xyz étant consommé dans de nombreux endroits, j'ai précompilé la requête pour de meilleures performances, je voulais juste centraliser cet aspect pour le rendre plus facile à entretenir.
Lorsque je parcours les méthodes statiques du débogueur, quitte sans erreur, mais échoue lors de la prochaine étape, c'est-à-dire de la jonction et de l'évaluation. donc je suis un peu perplexe sur la façon de résoudre ce problème?
Je suis désolé pour les fautes de frappe & toutes les autres conclusions erronées que ma connaissance wrt C# et LINQ est limitée,
Ps: sur un Linq2Action de sidenote recommande un champ statique avec une méthode non statique
Tous aide serait appréciée
Quelles sont les signatures complètes? Fournissez plus de détails sur la façon dont votre code est organisé dans les classes et méthodes séparées. –