web-dev-qa-db-fra.com

Impossible de trouver une implémentation du modèle de requête pour le type de source 'System.Data.Entity.DbSet'

J'utilise Entity Framework pour la première fois, mais cela ne semble pas fonctionner comme prévu.

J'ai ce code:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

public static class QueryClass
{
    public static void Query()
    {
        using (var context = new MyDbEntities())
        {
            DbSet<MyTable> set = context.Tables;
            var query = from val in set select value; 

        }
    }
}

Sur la ligne de requête (exactement la variable "set" est soulignée en rouge) j'obtiens l'erreur:

Impossible de trouver une implémentation du modèle de requête pour le type de source "System.Data.Entity.DbSet". "Sélectionner" introuvable. Manque une référence ou une directive using pour 'System.Linq'

MyDbEntities est généré automatiquement par Entity Framework dans une approche Database-First, context.Tables est un DbSet, il devrait donc pouvoir utiliser Linq, qui a été ajouté via la directive using. Afin d'éviter les malentendus, au sein de cette classe, je trouve ce qui suit:

public virtual DbSet<MyTable> Tables { get; set; }

Que manque-t-il pour que le select fonctionne?

Je vous remercie.

22
Fylax

vous devrez ajouter une référence à System.Data.Linq

System.Data.Linq est spécifique à LINQ-SQL (DataContext, etc.)

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Linq;
using System.Linq;

public static class QueryClass
{
    public static void Query()
    {
        using (var context = new MyDbEntities())
        {

            IQueryable<MyTable> qTable= from t in context.Tables
                                        select t; // can you confirm if your context has Tables or MyTables?
            Console.WriteLine("Table Names:");
            foreach (var t in qTable)
            {
                Console.WriteLine(t.Name);//put the relevant property instead of Name
            }
        }
     }
}
30
Krishna