Sie müssen wahrscheinlich die API debuggen und weitere Details angeben, um eine Ursache einzugrenzen. Ein paar Dinge, die ich sehen kann:
var prestation = queryString.FirstOrDefault();
// Handle when prestation comes back #null. Is that valid?
var results = db.Partenaires.Where(p => p.PartenairePrestations.Any(pp => pp.Prestation.NomPrestation == prestation.Value))
// .ToList() // Avoid .ToList() here... Select the entity properties you need.
.Select(p => new PartenaireMapItem {
IdPartenaire = p.IdPartenaire,
FirstName = p.FirstName,
LastName = p.LastName,
// NomComplet = p.LastName.Substring(0,1).ToUpper() + ". " + p.FirstName, // Remove. Make this a computed property in your view model.
Type = p.Type,
// DureeMin = 50, // Can remove, can be a computed property.
Lat = p.Lat,
Lng = p.Lng,
ImageUrl = p.ImageUrl,
SeDeplace = p.SeDeplace, // Ok if a String/value.
ADomicile = p.ADomicile, // Ok if a String/value.
Notes = p.NoteClientPartenaires, // Ok if a String/value.
Prestations = p.PartenairePrestations.Select(y => y.Prestation.NomPrestation).ToList(); // Assuming this is retrieving the names of presentations. List<string>.
}).ToList();
return results;
Das frühe .ToList() war erforderlich, weil Sie versuchten, Werte (NameComplet) im Linq-Ausdruck zu berechnen, die normalerweise an EF übermittelt worden wären, die Ihr DB-Anbieter nicht versteht. Wählen Sie aus Effizienzgründen nur zugeordnete Eigenschaften aus und ändern Sie stattdessen alle berechneten Werte in schreibgeschützte Eigenschaften in Ihrem Ansichtsmodell. (PartenaireMapItem)
private string _nomComplet = null;
public string NomComplet
{
get { return _nomComplet ?? (_nomComplet = LastName.Substring(0,1).ToUpper() + ". " + FirstName); }
}
Dieses Beispiel puffert das Ergebnis unter der Annahme, dass die Namensdetails schreibgeschützt sind. Wenn der Vor-/Nachname aktualisiert werden kann, geben Sie einfach jedes Mal den berechneten Namen zurück.
Die anderen Eigenschaften sollten in Ordnung sein, vorausgesetzt, dass SeDeclace/ADomicile Zeichenfolgenwerte und keine untergeordneten Entitäten sind. Dasselbe gilt für die Liste der Prestations. Eine Liste von Zeichenfolgen für die Prestation-Namen sollte in Ordnung sein.
Die andere geringfügige Änderung, die ich vorgenommen habe, bestand darin, die Ansichtsmodelle in einer Variablen abzurufen, um sie vor der Rückkehr zu überprüfen. Dies erleichtert die Verwendung eines Haltepunkts, um die Ergebnisse vor der Rückkehr zu überprüfen. Bestimmen Sie von hier aus, ob ein Fehler von der Berechnung der Ergebnisse zurückkommt, oder etwas anderes, wie z. B. das Serialisieren der resultierenden Ansichtsmodelle zurück an den Client.