public class UserBuilding
{
[Key, Column(Order = 0)]
public int UserId { get; set; }
[Key, Column(Order = 1)]
public int BuildingId { get; set; }
public int BuildingLevel { get; set; }
}
Se volevo tornare tutti i diversi edifici che appartengono a un utente, vorrei fare le seguenti operazioni:Framework Entity: come restituire una riga da una tabella con le chiavi composite?
database.UserBuildings.Where(b => b.UserId == userId);
La mia domanda è che cosa se volevo restituire un edificio specifico da un utente specifico? Quale sarebbe il modo più "efficiente" per farlo? C'è un modo migliore (ad esempio una funzione built-in) al massimo i seguenti:
database.UserBuildings.Where(b => b.UserId == userId && b.BuildingId == buildingId);
funziona come un incanto grazie! Pensi che questo sarebbe considerato "più efficiente" in termini di velocità dell'algoritmo? – Deniz
@Deniz Trova i primi controlli se l'entità è già nel contesto prima di eseguire query sul database, quindi sì, è più efficiente –
@Deniz: 'Trova' può essere molto più lento se l'entità è * non * caricata (http://stackoverflow.com/ domande/11686225/dbset-trovare-metodo-ridicolmente-slow-rispetto-al-SingleOrDefault-on-id). Regola empirica, forse: usa 'Trova' se è probabile che l'oggetto sia già nel contesto. Se sai che non è ancora caricato o è molto improbabile, usa la query nella tua domanda. – Slauma