2009-11-11 4 views
1

Mes tables de base de données sont les suivantes: Utilisateurs (USERID Nom) Amis (UserIdFrom, UserIdTo)C# et ADO .NET modèles de données d'entité avec les associations LINQ et entités pour la même table

J'ai également un ADO Modèle de données d'entité .NET qui décrit ces tables. Mon modèle de données d'entité .NET comporte une entité nommée Users et une association pour cette entité appelée Friends qui correspond à la table Friends.

Ma question est que je veux obtenir une instruction LINQ pour sélectionner tous les objets d'association (Note: A peut être un ami de B mais B pas un ami de A).

Dans le modèle de données d'entité .NET, j'ai essayé d'ajouter une nouvelle entité pour les amis, mais je ne peux pas utiliser le même nom pour la même table que l'association dans la table utilisateur.

De cette façon, je serais en mesure de le faire:

var = friendsSetResults des amis dans context.Friends où friends.UserIDFrom == || userID friends.UserIDTo == userID sélectionnez vos amis; Mais comme je l'ai dit, cela ne me permettra pas de créer une association plus une entité pour cette table.

Si j'utilisais SQL directement, ce serait une simple déclaration, mais je suis coincé avec LINQ. Quelles sont mes options?

Mon but est de supprimer chacune des entrées de et vers.

Répondre

1

Si vous souhaitez supprimer un ensemble de données, il est préférable d'envoyer la requête de suppression directement à la base de données, vous pouvez donc faire un seul delete from friends where userIdFrom = @userId || userIdTo = @userId.

Je ne sais pas dans le framework d'entité, mais sur linq2sql vous pouvez ajouter une méthode dans la classe partielle du contexte et lui demander d'appeler une requête - comme context.deleteFriends (userId). Il doit y avoir quelque chose de similaire dans le cadre d'entité.

Si vous voulez le faire dans le cadre de l'entité, u peut:

var user = context.Users.First(u=>u.userID == userId); 
var toFriends = user.ToFriends.ToList(); 
var fromFriends = user.FromFriends.ToList(); 
foreach(var u in ToFriends) { 
    user.ToFriends.Remove(u); //pseucode --- use whatever syntax that allows you to remove in entity framework 
} 
foreach(var u in FromFriends) { 
    user.FromFriends.Remove(u); //pseucode --- use whatever syntax that allows you to remove in entity framework 
} 
context.SubmitChanges(); 
Questions connexes