Envoyé par
chrisdot
T'as pas bcp cherché alors... :-)
On peut ajouter une "projection" soit du côté client, en rajoutant un "select" derrière la requête appelée, ou alors le plus simple peut être c'est de créer une nouvelle requête côté serveur qui ne te chargera que ce que tu veux.
Tu calques ça sur ton "GetEmployeurs" dans ton domainservice (côté serveur), en le renommant, et en ajoutant le select adéquat, ce qui donnerait qque chose comme:
1 2 3 4 5 6
|
public IQueryable<Employeur> GetEmployeursIds()
{
var ret = this.ObjectContext.Employeurs.Select(e=>EmployeurId);
return ret;
} |
Et à la place d'appeler "GetEmployeursQuery", tu appeleras "GetEmployeursIdsQuery" (qui sera généré pr toi côté client).
A+
Merci pour la réponse
Je suis pas très à l'aise avec la logique Linq (et les projections ...)
Coté Client :
La méthode Select n'est pas accessible dans le DomainContext
Dim query As EntityQuery(Of Employeur) = From Emp In SelectEmpDmc.GetEmployeursQuery() Select !!!
Coté Serveur :
J'ai rajouté la requète comme tu l'indiques
1 2 3
| Public Function GetEmployeursIds() As IQueryable(Of Employeur)
Return Me.ObjectContext.Employeurs.Select(Function(e) e.EmployeurId)
End Function |
-> Le Type de Retour n'est pas bon
Si je modifie le Type de retour
1 2 3
| Public Function GetEmployeursIds() As IQueryable(Of String)
Return Me.ObjectContext.Employeurs.Select(Function(e) e.EmployeurId)
End Function |
La méthode GetEmployeursIdsQuery() n'est pas générée pour le client (je suppose parce que le type n'est pas connu dans les métadatas)
Evidement sur la base de données MSSQL la requète suivante fonctionne très bien
SELECT EmployeurId FROM Employeurs
Je bloque à quel endroit ?
Encore merci pour votre aide
Partager