sql >> Database teknologi >  >> RDS >> Mysql

asp.net / EntityFramework - Hvorfor går min applikationspulje ned?

Du bliver sandsynligvis nødt til at fejlsøge API'et og specificere flere detaljer for at hjælpe med at indsnævre en årsag. Et par ting, jeg kan se:

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;

Den tidlige .ToList() var påkrævet, fordi du forsøgte at beregne værdier (NameComplet) i Linq-udtrykket, som normalt ville være blevet ført til EF, som din DB-udbyder ikke vil forstå. For effektivitetens skyld skal du kun vælge tilknyttede egenskaber og i stedet ændre eventuelle beregnede værdier til skrivebeskyttede egenskaber på din visningsmodel. (PartenaireMapItem)

private string _nomComplet = null;
public string NomComplet
{ 
    get { return _nomComplet ?? (_nomComplet = LastName.Substring(0,1).ToUpper() + ". " + FirstName); }
}

Dette eksempel bufferer resultatet, forudsat at navnedetaljerne er skrivebeskyttede. Hvis for-/efternavn kan opdateres, skal du blot returnere det beregnede navn hver gang.

De andre egenskaber burde være i orden, forudsat at SeDeclace/ADomicile er strengværdier og ikke underordnede enheder. Det samme gælder for listen over Prestations. En liste over strenge til Prestation-navnene burde være i orden.

Den anden mindre ændring, jeg lavede, var at hente visningsmodellerne i en variabel for at inspicere, før de returnerede. Dette gør det lettere at bruge et brudpunkt til at inspicere resultaterne, før de returneres. Herfra afgør, om der kommer en fejl fra beregningen af ​​resultaterne, eller noget andet, såsom at serialisere de resulterende visningsmodeller tilbage til klienten.




  1. PostgreSQL:FATAL - Peer-godkendelse mislykkedes for bruger (PG::ConnectionBad)

  2. PHP PDO multiple select-forespørgsel, der konsekvent dropper sidste rækkesæt

  3. SQL-sætning slettes ikke i PHP

  4. Avanceret MySQL:Find sammenhænge mellem afstemningssvar