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; }
}
Gdybym chciał powrócić wszystkie inne budynki, które należą do użytkownika, chciałbym wykonać następujące czynności:Struktura obiektu: jak zwrócić wiersz z tabeli za pomocą kluczy złożonych?
database.UserBuildings.Where(b => b.UserId == userId);
Moje pytanie brzmi: co zrobić, jeśli chciałam wrócić konkretnego budynku od konkretnego użytkownika? Jaki byłby najbardziej "skuteczny" sposób robienia tego? Czy istnieje lepszy sposób (takie jak wbudowanej funkcji) niż:
database.UserBuildings.Where(b => b.UserId == userId && b.BuildingId == buildingId);
działa jak wdzięk dziękuję! Czy uważasz, że byłoby to uznane za "bardziej efektywne" pod względem szybkości algorytmu? – Deniz
@Deniz Znajdź najpierw sprawdza, czy jednostka jest już w kontekście przed wysłaniem zapytania do bazy danych, więc tak, jej bardziej wydajna –
@Deniz: 'Znajdź' może być znacznie wolniejsze, jeśli jednostka jest * nie * załadowana (http://stackoverflow.com/ pytania/11686225/dbset-find-method-śmiesznie-powolny-porównywany-do-pojedynczego-potęgi-na-id). Być może z reguły: Użyj 'Znajdź', jeśli prawdopodobne jest, że obiekt jest już w kontekście. Jeśli wiesz, że nie jest jeszcze załadowany lub jest bardzo mało prawdopodobne, użyj zapytania w swoim pytaniu. – Slauma