Comment les clés et les entités étrangères sont-elles traitées dans LINQ aux entités?
Question
En utilisant simplement ceci à titre d'exemple ...
Voici les colonnes de ma table UserProfile:
ProfileID (Clé primaire)
ID utilisateur (clé étrangère)
Adresse
Numéro de téléphone
maintenant, lorsque je souhaite ajouter un nouvel utilisateur à la base de données à l'aide de LINQ to Entities, voici ce que je fais:
UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */
_myDB.AddToUserProfiles(profileToAdd);
Quelques questions ...
-
Existe-t-il quelque chose de particulier à propos des clés étrangères que je devrais connaître, ou puis-je l'assigner de la même façon que je l'ai fait avec Address ou PhoneNumber?
-
L'utilisateur est un GUID et j'ai besoin de le récupérer à partir de l'ID utilisateur de l'utilisateur actuel. Je n'arrive pas à accéder à la classe d'appartenance ou à la classe d'utilisateur (c'est une bibliothèque C #, donc je suppose qu'il a besoin d'une référence, mais mon projet fait déjà référence à ma bibliothèque, donc je ne peux pas faire référence à avoir une dépendance circulaire)
-
Je ne comprends pas très bien comment traiter avec Guids. Lors de l'implémentation de
getProfileByUserName (string userName)
, voici mon problème ...
Tout d'abord, je ne peux pas récupérer l'ID utilisateur. Voici ce que j'ai essayé:
Guid currUser = (Guid)from user in _ myDB.aspnet_Users
where user.UserName == userName
select new { user.UserId };
Mais il est dit que je ne peux pas le convertir en Guid pour une raison quelconque.
Si vous pouviez donner un aperçu de l'une ou l'autre de ces questions, je l'apprécierais grandement!
Merci,
Matt
La solution
Si la base de données contient les contraintes appropriées pour la relation de clé étrangère, il doit y avoir un membre dans votre classe UserProfile
, qui pointe vers un objet Utilisateur
. Le nom peut être un peu étrange, tel que UserProfileUser
ou quelque chose comme ça.
Cependant, vous pouvez changer ce nom dans le diagramme. Il suffit de définir un pointeur sur l’objet entité utilisateur et le framework vous attribuera le bon identifiant.