Avertissement Voici deux solutions qui fonctionneront. Le premier est facile. Le 2ème, je pense que c'est ce que vous recherchez, mais prenez-le pour ce que ça vaut. Assurez-vous de réaliser ce que vous faites, car cela va prendre les données du fournisseur d'adhésion et y accéder directement, ce qui pourrait entraîner des bombes cachées si vous ne faites pas attention (comme la suppression de données).
Les données d'appartenance sont destinées à être simplement utilisées pour l'authentification; rôles pour autoriser; profils pour les données spécifiques à l'utilisateur (comme le fuseau horaire ou la couleur préférée).
Solution Un
Si vous voulez ajouter un commentaire sous l'utilisateur actuel (ou tout autre utilisateur), vous pouvez faire:
var comment = new Comment(....);
comment.userId = User.Identity.Name; //for user name
ou
comment.userId = new Guid(Membership.GetUser().ProviderUserKey); //for guid in table
C'est la façon eays et vous n'avez jamais vraiment accès direct aux tables aspnet, vous utilisez juste son info.
Solution Deux
Je suppose que vous utilisez L2S et le concepteur dans VS. En ajoutant les tables d'appartenance à votre conception L2S, vous aurez accès à ses données. Cela peut même être préférable pour certaines requêtes rapides (comme les dates, les informations de verrouillage, etc. car vous n'avez pas besoin d'utiliser les sprocs intégrés qui ont un sérieux code over-kill et lourd). Si vous créez une relation dans la base de données ou dans le concepteur L2S, vous disposez d'une relation à laquelle vous pouvez accéder comme le demande votre question.
À ce stade, le concepteur a créé vos classes pour les commentaires et les utilisateurs. Si vous faites quelque chose avec la table utilisateur que vous venez de créer, vous contournez la conception du fournisseur d'adhésion - ne le faites pas à moins que vous ne le fassiez maintenant. Lorsque vous ajoutez un commentaire à l'utilisateur, il ajoute le commentaire aux tables de commentaires avec la relation correcte intacte.
Vous devriez maintenant être en mesure de le faire:
var user = MyUser.GetById(userId);
user.Comments.Add(comment);
Rappelez-vous, que l'utilisateur dans ce cas est différent que lorsque vous faites
var user = Membership.GetUser(userId);
Si j'utilise LINQ to Entities pouvez ces relations être créé automatiquement? – hanesjw
Je ne suis pas sûr s'il y a un moyen entièrement automatique. Rechercher "linq to entities profileprovider". E.g .: http://www.codeproject.com/KB/aspnet/LINQCustomProfileProvider.aspx – Zyphrax