[Linq to Entities] Comment retourner le résultat d'une requête dans une méthode?
bonjour à tous,
j'ai commencé à travailler avec linq to entities et j'ai rencontré ce problème.
je n'arrive pas à retourner le résultat d'une requête dans une méthode, même si j'ai créé une classe dans laquelle j'instancie le résultat (chaque row de table ) et que je mets dans un iqueryable, mais ca marche pas, et pour cause, ce n'est pas possible d'instantier une class paramétrable dans Linq to
Entities, ( c'est le forum de ADO linq qui en parle )
" Exception : Only parameterless constructors and initializers are supported in LINQ to Entities "
quelqu'un aurait il rencontré le meme problème ?
merci d'avance pour votre aide
Code:
1 2 3 4 5 6 7 8 9 10 11
| public IQueryable<DAO.TableMapping.Logiciel> listLogiciel()
{
GestionArchiveEntities entite = new GestionArchiveEntities();
ObjectQuery<Logiciels> logiciels = entite.Logiciel;
IQueryable<DAO.TableMapping.Logiciel> query = from p in logiciels
select new DAO.TableMapping.Logiciel ( p.titre, 1, p.verssion, p.description, p.date.Value, p.chemin );
return query;
} |
en réponses à vos réactions
en fait j'ai oublié de mentionné que j'ai pas envie d'afficher tous les champs de la ligne, car le linq to entity ajoute trois ou 4 fields que j'ai pas envie de binder à mon datagrid, j'aimerais selectionner uniquement les champs dont j'ai besoin.
j'ai fais plusieurs recherches sur le net disant qu'il était pas possible d'instantier une class dans une requête linq et ainsi de binder le résultat dans la class a chaque fois
j'espère que quelqu'un a déjà rencontré le même problème que le miens.
si je fais un select p, ca selectionne toute la ligne, c'est pour ca que j'ai fais un select new pour justement filtrer uniquement les field dont j'ai besoin.
meci de votre attention.
y'a t il moyen de faire mieux ?
je voudrais savoir s'il est possible de faire mieux, car je suis pas vraiment convaincu par ma méthode.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public List<DAO.TableMapping.Logiciel> listLogiciel()
{
GestionArchiveEntities entite = new GestionArchiveEntities();
ObjectQuery<Logiciels> logiciels = entite.Logiciel;
List<DAO.TableMapping.Logiciel> objects = new List<DAO.TableMapping.Logiciel>();
var query = from p in entite.Logiciel
select new {p.id, p.titre,p.Categorie.nom, p.verssion, p.description, p.chemin };
foreach (var q in query)
objects.Add(new DAO.TableMapping.Logiciel(q.id, q.titre, q.verssion, q.nom, q.description, q.chemin));
return objects;
} |