2

Tout en utilisant comme un exemple ...Comment les clés étrangères et les règles sont-elles traitées dans LINQ to Entities?

Voici les colonnes de ma table UserProfile:
ProfileID (clé primaire)
UserID (clé étrangère)
Adresse
PhoneNumber

maintenant, quand je veux ajouter un nouvel utilisateur à la base de données en utilisant 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 ...

  1. Y at-il quelque chose de spécial sur le traitement des clés étrangères que je dois savoir, ou puis-je lui affecter tout comme je l'ai fait avec l'adresse ou PhoneNumber? L'ID utilisateur est un guide et je dois le récupérer à partir de l'ID utilisateur de l'utilisateur actuel. Je n'arrive pas à avoir accès à la classe Membership ou User class (Ceci est une bibliothèque C# donc j'imagine qu'il a besoin d'une référence en quelque sorte, mais mon projet référence déjà ma bibliothèque pour que je ne puisse plus me référer ou je vais avoir une dépendance circulaire)

  2. Je ne comprends pas très bien comment gérer Guids. Lors de la mise en œuvre getProfileByUserName(string userName), voici mon problème ...

Tout d'abord je ne peux pas récupérer le code d'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 dit que je ne peux pas le jeter à un Guid pour une raison quelconque.

Si vous pouvez fournir un aperçu de l'une de ces questions, je l'apprécierais grandement!

Merci,
Matt

Répondre

1

Si la base de données contient les contraintes propres à la relation clé étrangère, il devrait y avoir un membre dans votre classe UserProfile, qui pointe vers un objet User. Le nom pourrait être un peu étrange, comme UserProfileUser ou quelque chose comme ça.

Toutefois, vous pouvez modifier ce nom dans le diagramme. Définissez simplement un pointeur sur l'objet entité utilisateur et l'infrastructure affectera l'ID correct pour vous.

+0

Donc, je n'ai même pas à faire face à l'ID, juste l'objet lui-même? – Matt

+0

Oui. L'ID de clé étrangère est juste un lien entre deux lignes dans deux tables, et en C#, il est tellement mieux exprimé comme une référence d'objet. – Timbo

Questions connexes