Dans mon application silverlight, j'essaie de créer une connexion à une base de données en utilisant LINQ. Tout 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'essaye d'exécuter la requête suivante:
[OperationContract]
public tblPersoon GetPersoonByID(string id)
{
var query = (from p in tblPersoon where p.id == id select p).Single();
Mais chez 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ù» introuvable.
Et même quand j'essaye ce qui suit:
var query = (from p in tblPersoon select p).Single();
Cela me donne une erreur disant «Sélectionner» introuvable!
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.
public System.Data.Linq.Table<tblPersoon> tblPersoons { get { return this.GetTable<tblPersoon>(); } }
Et quand j'utilise: var query = (from p in tblPersoon.Cast <Person> () select p) .Single (); Cela me donne les erreurs suivantes sur .Cast. 'SilverlightApplication1.Web.tblPersoon' ne contient pas de définition pour 'Cast'tblPersoons
(notez le s à la fin) tandis que le type esttblPersoon
. Vous interrogez le type, au lieu de la propriété sur le type.var query = (from p in tblPersoons select p).Single();
cela me dit que tblPersoons n'existe même pas.Vous devrez peut-être ajouter une
using
déclaration au fichier. Le modèle de classe Silverlight par défaut ne l'inclut pas:la source
Assurez-vous que ces références sont incluses:
Ajoutez ensuite l'instruction using
la source
J'ai eu un problème similaire avec des ensembles de données générés fortement typés, le message d'erreur complet était:
De mon code:
J'ai donc fait ce qu'il suggérait et spécifié explicitement le type:
Ce qui a fonctionné un régal.
la source
Il vous manque une égalité:
where
clause doit aboutir à un booléen.OU vous ne devriez pas utiliser
where
du tout:la source
J'ai eu la même erreur que celle décrite par le titre, mais pour moi, il s'agissait simplement d'installer Microsoft Access 12.0 oledb redistribuable à utiliser avec LinqToExcel.
la source
Salut, la façon la plus simple de le faire est de convertir ce IEnumerable en un Queryable
S'il s'agit d'un interrogeable, il devient alors facile d'effectuer des requêtes.
Veuillez vérifier ce code:
Assurez-vous d'inclure System.Linq . De cette façon, votre erreur sera résolue.
la source
Pour ceux d'entre vous (comme moi) qui ont perdu trop de temps à cause de cette erreur:
J'avais reçu la même erreur: "Impossible de trouver l'implémentation du modèle de requête pour le type de source 'DbSet'" mais la solution pour moi était de corriger une erreur au niveau de DbContext.
Quand j'ai créé mon contexte, j'avais ceci:
Et mon référentiel (je suivais un modèle de référentiel dans le guide ASP.NET) ressemblait à ceci:
Mon problème est venu de la configuration initiale de mon DbContext, lorsque j'ai utilisé DbSet comme générique au lieu du type.
J'ai changé
public DbSet Contacts { get; set; }
àpublic DbSet<Contact> Contacts { get; set; }
et tout à coup la requête a été reconnu.C'est probablement ce que dit km dans sa réponse, mais comme il l'a mentionné
IEnumerable<t>
et non,DbSet<<YourDomainObject>>
j'ai dû fouiller dans le code pendant quelques heures pour trouver la ligne qui avait causé ce mal de tête.la source
J'ai eu la même erreur, mais pour moi, elle était attribuée au fait d'avoir une base de données et une table qui portaient le même nom. Lorsque j'ai ajouté l'objet d'entité ADO .NET à mon projet, il a mal généré ce que je voulais dans mon fichier de contexte de base de données:
qui aurait dû être:
Et
dont je n'avais pas vraiment besoin, alors je l'ai commenté.
J'essayais de tirer ma table comme ça, dans mon contrôleur, quand j'ai eu mon erreur:
J'ai corrigé le contexte de ma base de données et tout allait bien, après cela.
la source