Dans mon application silverlight, j’essaie de créer une connexion à une firebase database en utilisant LINQ. D’abord, j’ajoute une nouvelle classe LINQ to SQL et y glisse ma table appelée “tblPersoon”.
Ensuite, dans mon fichier de service, j’essaie d’exécuter la requête suivante:
[OperationContract] public tblPersoon GetPersoonByID(ssortingng id) { var query = (from p in tblPersoon where p.id == id select p).Single();
Mais à tblPersoon, cela me donne l’erreur suivante.
Impossible de trouver une implémentation du modèle de requête pour le type de source ‘SilverlightApplication1.Web.tblPersoon’. “Où” pas trouvé.
- Détecte instantanément la déconnexion du client du socket du serveur
- Spécialisation partielle du modèle de fonction C ++?
- Async PartialView provoque une exception «HttpServerUtility.Execute bloquée…»
- Comment pouvez-vous modifier les parameters réseau (adresse IP, DNS, WINS, nom d’hôte) avec le code en C #
- Pourquoi les optimiseurs C ++ ont-ils des problèmes avec ces variables temporaires ou plutôt pourquoi v devrait-il être évité dans les boucles serrées?
Et même quand j’essaie ce qui suit:
var query = (from p in tblPersoon select p).Single();
Cela me donne une erreur en disant “Select” not found!
Le code de la classe générée pour ma table peut être trouvé ici: http://pastebin.com/edx3XRhi
Qu’est-ce qui cause cela et comment pourrais-je résoudre ce problème?
Je vous remercie.
Le tblPersoon
implémente-t-il IEnumerable
? Vous devrez peut-être le faire en utilisant:
var query = (from p in tblPersoon.Cast() select p).Single();
Ce type d’erreur ( Impossible de trouver une implémentation du modèle de requête ) se produit généralement lorsque:
using System.Linq
utilisation de l’espace de noms LINQ (en using System.Linq
) IEnumerable
Modifier :
En dehors du fait que vous interrogiez le type ( tblPersoon
) au lieu de la propriété tblPersoons
, vous avez également besoin d’une instance de contexte (classe qui définit la propriété tblPersoons
), comme ceci:
public tblPersoon GetPersoonByID(ssortingng id) { var context = new DataClasses1DataContext(); var query = context.tblPersoons.Where(p => p.id == id).Single(); // ...
Vous devrez peut-être append une instruction using
au fichier. Le modèle de classe Silverlight par défaut ne l’inclut pas:
using System.Linq;
Assurez-vous que ces références sont incluses:
Puis ajoutez l’instruction using
using System.Linq;
J’ai eu un problème similaire avec les jeux de données fortement typés générés, le message d’erreur complet était:
Impossible de trouver une implémentation du modèle de requête pour le type de source ‘MyApp.InvcHeadDataTable’. “Où” pas trouvé. Envisagez de spécifier explicitement le type de la variable de plage ‘row’.
De mon code:
var x = from row in ds.InvcHead where row.Company == Session.CompanyID select row;
J’ai donc fait comme il a suggéré et explicitement spécifié le type:
var x = from MyApp.InvcHeadRow row in ds.InvcHead where row.Company == Session.CompanyID select row;
Ce qui a fonctionné un régal.
Il vous manque une égalité:
var query = (from p in tblPersoon where p.id == 5 select p).Single();
where
clause doit donner un booléen.
OU vous ne devriez pas utiliser where
:
var query = (from p in tblPersoon select p).Single();
J’avais la même erreur que celle décrite par titre, mais pour moi, il s’agissait simplement d’installer Microsoft Access 12.0 oledb redissortingbuable à utiliser avec LinqToExcel.
Salut le moyen le plus facile de le faire est de convertir ce IEnumerable en un Queryable
S’il s’agit d’une requête, l’exécution des requêtes devient facile.
Veuillez vérifier ce code:
var result = (from s in _ctx.ScannedDatas.AsQueryable() where s.Data == scanData select s.Id).FirstOrDefault(); return "Match Found";
Assurez-vous d’inclure System.Linq . De cette façon, votre erreur sera résolue.
Pour ceux d’entre vous (comme moi) qui ont perdu trop de temps avec cette erreur:
J’avais reçu la même erreur: “Impossible de trouver l’implémentation de query Pattern pour le type de source ‘DbSet'” mais la solution pour moi était de corriger une erreur au niveau de DbContext.
Lorsque j’ai créé mon contexte, j’ai eu ceci:
public class ContactContext : DbContext { public ContactContext() : base() { } public DbSet Contacts { get; set; } }
Et mon repository (je suivais un modèle de référentiel dans le guide ASP.NET) ressemblait à ceci:
public Contact FindById(int id) { var contact = from c in _db.Contacts where c.Id == id select c; return contact; }
Mon problème venait de la configuration initiale de mon DbContext, lorsque j’ai utilisé DbSet comme générique plutôt que comme type.
J’ai changé de public DbSet Contacts { get; set; }
public DbSet Contacts { get; set; }
public DbSet Contacts { get; set; }
au public DbSet
public DbSet
public DbSet
et soudain la requête a été reconnue.
C’est probablement ce que km dit dans sa réponse, mais comme il a mentionné IEnumerable
et non DbSet<
j’ai dû fouiller le code pendant quelques heures pour trouver la ligne qui causait ce mal de tête.