Ho una tabella utenti:Trova un record in dbSet utilizzando trovare senza una chiave primaria
Users:
+ID
+Username
+...
voglio usare myDBContext.Users.Find(Username)
a pinna un utente. nel mio contesto attuale non posso usare il suo ID.
devo utilizzare una query LINQ completa? per esempio.
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
Ho anche cercato di definire il nome utente come chiave primaria nel mio edmx ma che ha provocato il seguente errore:
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
ancora meglio! .. Grazie. – Mortalus
Non sarebbe meglio usare 'FirstOrDefault' invece? La mia comprensione del metodo 'SingleOrDefault' è che sfoglia la tabella * whole * per assicurarsi che solo un record corrisponda alla condizione. Potrebbe non essere ciò che l'OP vuole. – Crono
@Crono Sì, hai ragione per FirstOrDefault se consideriamo le prestazioni di esso rispetto a SingleOrDefault. Ma qui penso che in base ai risultati attesi dovremmo fare una selezione tra questi due metodi. Se si desidera solo un singolo risultato e si prevede un'eccezione se esiste più di una sequenza di uguali, utilizzare SinleOrDefault altrimenti utilizzare FirstOrDefault. Aggiornerò la mia risposta con questo contesto. –