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.
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
}
}
}
}