Craig est juste parce que la table usrgrp
n'a que 2 FKs, il est un pur table de jointure, et en tant que tel Entity Framework interprète comme une association ManyToMany. Comme les exemples de code Craig a montré ci-dessus, c'est généralement bien pour la plupart des clients. Si toutefois vous voulez gérer indépendamment la relation UserGroup, une option consiste à ajouter une colonne supplémentaire à la table usrgrp, une colonne d'identité est probablement la plus facile. Entity Framework ne peut plus alors réduire cette table en seulement navigations, vous verrez donc une Entité pour la table usrgrp que vous pouvez manipuler indépendamment.
à savoir
someUser.UserGroups.Add(new UserGroup {User = someUser, Group = someGroup});
avis vous ne devez pas spécifier la colonne d'identité (ce qui serait une douleur) car il est généré magasin.
Généralement, la plupart des clients préfèrent ne pas voir une entité pour les tables de jointure pure, car l'expérience de programmation est plus simple sans cela.Par exemple les requêtes LINQ deviennent un peu plus compliqué:
ceci:
var users = from g in ctx.Groups
from u in g.Users
where g.Name == "Administrators"
select u;
devient:
var users = from g in ctx.Groups
from ug in g.UserGroups
where g.Name == "Administrators"
select ug.User;
espoir cette clarification supplémentaire aide
Alex
Alors, comment sur la navigation propriétés pour EF 4.0? :) –
Craig Je ne comprends pas votre question. Pouvez-vous clarifier? –
Je veux pouvoir avoir des propriétés sur les navigations subsumées. À l'heure actuelle, une table ne sera subsumée que plusieurs-à-plusieurs si elle ne contient que les deux clés. Je veux la possibilité d'avoir (et lire/écrire), dans le client, d'autres champs dans les tables utilisées pour plusieurs-à-plusieurs. –