Wie Join zwei Tabellen in Code-first-Ansatz
ich habe zwei Tabelle, Benutzer und Freundschaft. i want to join dieser beiden Tabellen, so dass die Spalte TheirFriends die UserID aller Freunde, die haben einige Attribut ist in Benutzer. das ist, ich möchte jeden Freund mit allen Ihren Attributen.
Die Ausgabe wird wie folgt Aussehen
Theirfriends firstname LastName UserPicture
brauche ich das linq und lambda-Ausdruck.
Benutzer:
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; }
Freundschaft
public class FriendShip
{
public int FriendShipID { get; set; }
public string TheirFriends { get; set; }
public String UserID { get; set; }
}
- Bedeutet dies, dass der string
TheirFriends
stellt so etwas wie eine Sammlung mit einem Trennzeichen, wie "Jim;John, Diana", und die Namen sindUserIDs
? Und was ist dann dieUserID
Eigenschaft in derFriendShip
Klasse? - wenn ein Benutzer einen Freund hinzufügen geht um legen Sie Die Benutzer-id des Freundes in TheirFriend Spalte und seine eigenen userID in der UserID, die in der Freundschaft-Tabelle. also immer wenn ich Suche insbesondere Benutzer mit UserID in Freundschaft, in Tabelle ich werde zurückkehren, alle seine oder Ihre Freunde. Normalerweise, wenn ich dies in sql i verwenden Sie Ansichten, um sich Ihnen anzuschließen.
- Sie sollten durch zu gehen die EF/MVC-tutorial (asp.net/mvc/overview/models-(Daten)), die zeigt, wie Sie dies und mehr.
- Der link im Kommentar oben ist mir gebrochen (URL sieht unvollständig).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die folgenden verwenden:
Das Ergebnis ist eine Sammlung von anonymen Objekten, und jedes element hat einen
User
Eigenschaft mit einem Benutzer und einemFriends
Sammlung enthält alle Benutzer, die Freunde von den angegebenen Benutzer. Wegen derGroupJoin
das Ergebnis enthält auch Benutzer ohne Freunde (Friends
Sammlung ist in diesem Fall leer). Etwa so:Aber dies ist nicht der Entity-Framework-Weg zur Arbeit mit einem solchen Modell. Sie sollte eigentlich eine navigation Eigenschaft in Ihrem
User
Klasse:Und eine viele-zu-viele-Beziehung zwischen den Nutzern:
FriendShips
wäre nur eine join-Tabelle in der Datenbank (ohneFriendShipID
SpalteUserID
undTheirFriends
erstellen einen zusammengesetzten Schlüssel statt) und nicht eine Entität im Modell.User
ist Ihre einzige Entität. Dann könnte man das gleiche Ergebnis erzielen viel einfacher:Nicht nur weniger Zeilen code, sondern auch viel einfacher zu Lesen und zu verstehen. EF kümmert sich um die komplexe Verbindung und Gruppierung in der Datenbank bei der query-übersetzung in SQL.
Bearbeiten
Können Sie Beziehungen hinzufügen (= Zeilen in der Tabelle link
FriendShips
), indem Sie einen vorhandenen Benutzer zu derFriends
Sammlung:Ebenfalls können Sie eine Beziehung entfernen (entfernen Sie die Zeile aus der join-Tabelle):
Es ist auch möglich, ohne Abfrage der Benutzer von der Datenbank, da hat man die Primärschlüssel-Werte: