Mam tabeli użytkowników:Znajdź rekord w dbSet użycie funkcji Znajdź bez klucza podstawowego
Users:
+ID
+Username
+...
chcę użyć myDBContext.Users.Find(Username)
do fin do użytkowników. w moim obecnym kontekście nie mogę użyć jego identyfikatora.
Czy muszę użyć pełnego zapytania LINQ? na przykład
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
Próbowałem również zdefiniować nazwę użytkownika jako klucz podstawowy w moim edmx ale to spowodowało następujący błąd:
Properties referred by the Principal Role User must be exactly identical to the key of the EntityType CamelotShiftManagementModel.User referred to by the Principal Role in the relationship constraint for Relationship CamelotShiftManagementModel.AssociationUserFK1. Make sure all the key properties are specified in the Principal Role. C:\Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 278 11 CamelotShiftManagement
jeszcze lepiej! .. dzięki. – Mortalus
Czy nie byłoby lepiej użyć 'FirstOrDefault' zamiast? Moje rozumienie metody 'SingleOrDefault' polega na tym, że przegląda ona cały * stół *, aby upewnić się, że tylko jeden rekord pasuje do warunku. Być może nie zależy to od PO. – Crono
@Crono Tak, masz rację dla FirstOrDefault, jeśli weźmiemy pod uwagę jego wydajność w porównaniu z SingleOrDefault. Ale tutaj myślę, że w zależności od oczekiwanego rezultatu powinniśmy dokonać wyboru między tymi dwoma metodami. Jeśli chcesz tylko jeden wynik i spodziewasz się wyjątku, jeśli istnieje więcej niż jedna sekwencja tego samego, użyj SinleOrDefault, w przeciwnym razie użyj FirstOrDefault. Zaktualizuję swoją odpowiedź w tym kontekście. –