Comment Joindre les deux table dans le Code de la première approche
j'ai deux table, de l'Utilisateur et de l'Amitié. je veux ce joindre deux tables de sorte que la colonne TheirFriends qui ont UserID de tous les amis ont certains attributs de l'Utilisateur. qu'est que je veux aller chaque ami avec tous leurs attributs.
La sortie ressemble à ceci
Theirfriends firstname LastName UserPicture
j'ai besoin de cette linq et expression lambda.
Utilisateur:
public class User
{
public String UserID { get; set; }
public string FirstName { get; set; }
public String LastName { get; set; }
public string Description { get; set; }
public string UserPicture { get; set; }
public string Gender { get; set; }
public String Interest { get; set; }
public DateTime DateOfBirth { get; set; }
public String Email { get; set; }
Amitié
public class FriendShip
{
public int FriendShipID { get; set; }
public string TheirFriends { get; set; }
public String UserID { get; set; }
}
- Est-ce à dire que la chaîne
TheirFriends
représente quelque chose comme une collection avec un séparateur, comme "Jim;Jean;Diana" et ces noms sontUserIDs
? Et quelle est alors laUserID
propriété dans leFriendShip
classe? - lorsqu'un utilisateur ajouter un ami va insérer Le nom de son ami dans TheirFriend de la colonne et de son propre nom d'utilisateur dans UserID dans l'amitié de la table. donc chaque fois que j'particulière de recherche de l'utilisateur avec le nom d'utilisateur dans l'Amitié de la table, je vais retourner tous ses amis. Normalement quand je fais cela en sql je utiliser des vues à se joindre à eux.
- Vous devez passer par l'EF/MVC tutoriel (asp.net/mvc/overview/models-(données) ), qui montre comment à cela, et plus encore.
- Le lien dans votre commentaire ci-dessus m'est cassé (adresse incomplète).
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les éléments suivants:
Le résultat est une collection d'objets anonymes et chaque élément a un
User
propriété avec un utilisateur et unFriends
collection qui contient tous les utilisateurs qui sont les amis de l'utilisateur donné. En raison de laGroupJoin
le résultat contient également les utilisateurs sans amis (Friends
collection est vide dans ce cas). À peu près ainsi:Mais ce n'est pas l'Entité-Cadre pour travailler avec un tel modèle. En fait, vous devez avoir une propriété de navigation dans votre
User
classe:Et plusieurs-à-plusieurs relations entre les utilisateurs:
FriendShips
serait juste une table de jointure dans la base de données (sansFriendShipID
colonne,UserID
etTheirFriends
construire une clé composite à la place) et non pas une entité dans votre modèle.User
est votre seule entité. Ensuite, vous pouvez obtenir le même résultat beaucoup plus facile:Non seulement moins de lignes de code, mais aussi beaucoup plus facile à lire et à comprendre. EF soins sur le complexe de rejoindre et de regroupement dans la base de données lorsque la requête est traduite en SQL.
Modifier
Vous pouvez ajouter des relations (= lignes dans la table de liaison
FriendShips
) par ajout d'un utilisateur existant à laFriends
collection:De même, vous pouvez supprimer une relation (supprimer une ligne dans la table de jointure):
Il est également possible sans interroger les utilisateurs de la base de données puisque vous avez les valeurs de clé primaire: