U zult waarschijnlijk de API moeten debuggen en meer details moeten specificeren om een oorzaak te achterhalen. Een paar dingen die ik kan zien:
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;
De vroege .ToList() was vereist omdat u probeerde waarden (NameComplet) te berekenen in de Linq-expressie die normaal gesproken aan EF zouden zijn toegevoerd, wat uw DB-provider niet zal begrijpen. Selecteer voor efficiëntie alleen toegewezen eigenschappen en wijzig in plaats daarvan alle berekende waarden in alleen-lezen eigenschappen in uw weergavemodel. (PartenaireMapItem)
private string _nomComplet = null;
public string NomComplet
{
get { return _nomComplet ?? (_nomComplet = LastName.Substring(0,1).ToUpper() + ". " + FirstName); }
}
Dat voorbeeld buffert het resultaat, ervan uitgaande dat de naamdetails alleen-lezen zijn. Als de voor-/achternaam kan worden bijgewerkt, retourneer dan elke keer de berekende naam.
De andere eigenschappen zouden in orde moeten zijn, ervan uitgaande dat SeDeclace/ADomicile tekenreekswaarden zijn en geen onderliggende entiteiten. Hetzelfde geldt voor de lijst met Prestations. Een lijst met strings voor de Prestation-namen zou goed moeten zijn.
De andere kleine wijziging die ik heb aangebracht, was om de weergavemodellen op te halen in een variabele om te inspecteren voordat ze terugkeerden. Dit vergemakkelijkt het gebruik van een breekpunt om de resultaten te inspecteren voordat ze terugkeren. Bepaal vanaf hier of er een fout terugkomt van de berekening van de resultaten, of iets anders, zoals het serialiseren van de resulterende weergavemodellen naar de client.