Come vengono gestite le chiavi esterne e le guide in LINQ to Entities?
Domanda
Usando questo come esempio ...
Ecco le colonne nella mia tabella UserProfile:
ProfileID (chiave primaria)
UserID (chiave esterna)
indirizzo
PhoneNumber
ora, quando voglio aggiungere un nuovo utente al database usando LINQ to Entities, ecco cosa sto facendo:
UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */
_myDB.AddToUserProfiles(profileToAdd);
Alcune domande ...
-
Esiste qualcosa di speciale nel trattare con le chiavi esterne che devo conoscere, oppure posso assegnarlo esattamente come ho fatto con l'indirizzo o il numero di telefono?
-
L'Identificativo è un Guid e devo recuperarlo dall'Identificativo dell'utente corrente. Non riesco ad accedere alla classe di appartenenza o alla classe utente (questa è una libreria C #, quindi immagino che abbia bisogno di un riferimento in qualche modo, ma il mio progetto sta già facendo riferimento alla mia libreria, quindi non posso fare riferimento o avere una dipendenza circolare)
-
Non capisco bene come gestire le guide. Quando si implementa
getProfileByUserName (string userName)
, ecco il mio problema ...
prima di tutto non riesco a recuperare UserID, ecco cosa ho provato:
Guid currUser = (Guid)from user in _ myDB.aspnet_Users
where user.UserName == userName
select new { user.UserId };
Ma dice che non posso inviarlo a un Guid per qualche motivo.
Se riesci a fornire informazioni su una di queste domande, lo apprezzerei molto!
Grazie,
Matt
Soluzione
Se il database contiene i vincoli appropriati per la relazione di chiave esterna, dovrebbe esserci un membro nella classe UserProfile
, che punta a un oggetto User
. Il nome potrebbe essere un po 'strano, come UserProfileUser
o qualcosa del genere.
Tuttavia, puoi cambiare questo nome nel diagramma. Basta impostare un puntatore sull'oggetto entità utente e il framework assegnerà l'id corretto per te.