2009-08-11 12 views
0

J'ai une adhésion à asp.net et j'utilise la méthode intégrée de création d'utilisateur car elle est pratique maintenant après cela en fonction de l'utilisateur que je veux ajouter 2 autres champs à l'aspnet_UserTable.Qu'est-ce qui me manque avec Entity Framework?

Dans mon aspnet_user Table je comme ça

// All Standard Fields that come with this table 
ClubID<nullable) 
ClubName <nullable) 

J'ai une table qui se rapporte ce

Club Table

ClubID<PK> 
ClubName 

forme donc cette relation qu'un club peut avoir de nombreux utilisateurs . Mais un utilisateur ne peut avoir qu'un seul club. Donc, maintenant j'essayais de comprendre comment ajouter le ClubID à l'Aspnet Usertable, car il n'apparaît pas dans le diagramme Entity Framework puisqu'il n'affiche pas FK.

// Note in this case I am just using EF made to create but in reality I will use the Membership.Create. 
aspnet_Users test = aspnet_Users.Createaspnet_Users(Guid.NewGuid(), Guid.NewGuid(), "myTest5", "mytest5", false, DateTime.Now); 

      test.Club = Club.CreateClub("One224", "Two224"); 
      test.ClubName = "go"; 

      MyEntities.AddToaspnet_Users(test); 

      MyrEntities.SaveChanges(); 

Alors ce que j'ai fonctionne mais ça n'a aucun sens et j'espère qu'il y a un meilleur moyen. Comme si j'essayais de créer le club et de le coller dans le test.club.

Cette addition est la clé primaire ClubID mais n'ajoute pas le nom club. Donc, je dois ajouter le nom du club séparément. Comme pourquoi? N'y a-t-il pas un meilleur moyen?

Je préfère aussi la syntaxe de la méthode linq, donc si vous en avez besoin et que vous connaissez cette syntaxe, pouvez-vous l'écrire.

Répondre

4

Je recommanderais quelques petites choses. Envisagez de ne pas ajouter de colonnes aux tables aspnet_ *. Si jamais vous voulez changer votre méthode d'authentification, vous serez coincé avec ces tables, même si vous n'en aurez plus besoin. De plus, il se peut qu'une nouvelle version du fournisseur d'abonnement soit mise à jour un jour, car vous ne pouvez pas mettre à niveau car vous avez personnalisé le schéma d'adhésion. Au lieu de cela, pourquoi ne pas créer une nouvelle table appelée User (ou quelque chose de votre choix) qui a votre propre clé primaire, mais qui renvoie à la clé unique de l'adhésion ASP.NET (le guid).

Votre table pourrait ressembler

utilisateur UserId (PK) AuthenticationUserId (FK retour à la table aspnet_User) ClubId (FK à votre table de club)

Trois: Je ne comprenez pourquoi vous avez répété ClubName à la fois dans votre table d'utilisateur et dans votre table de club. Vous n'avez vraiment besoin de définir le ClubName qu'une seule fois, n'est-ce pas? Gardez votre table Club comme elle est mais enlevez la colonne ClubName de la table des utilisateurs.

Votre code ci-dessus pour associer le club à l'utilisateur est correct et fonctionne parce que c'est ainsi que fonctionne Entity Framework. Vous associez des entités entre elles et vous êtes extrait de certains aspects relationnels de votre schéma de données. C'est un peu étrange de s'y habituer mais ça marche.

+0

Ya Je pense que je vais redessiner cela donc mettre une relation en utilisant l'ID utilisateur et en sortant ces 2 champs de la table. Je pense que je pensais alors que je ne devais pas commencer à regarder autour d'autres tables pour trouver ce que je voulais. Puisque certains utilisateurs quand ils sont faits j'ai besoin du nom de club et de UserName puisque je le veux dans ma base de données si vous avez ClubName = "A" UserName = "bob" et ClubName = "B" UserName = "bob" ils devraient être traités comme des utilisateurs distincts. – chobo2

+0

maintenant c'est Club table a ClubName, ClubID et UserID mais j'ai encore besoin d'obtenir le userID montrer comment dans cette table de club mais je ne peux toujours pas l'ajouter. – chobo2

+0

Je soutiendrais fortement cette recommandation - ne modifiez pas la table aspnet_users, étendez-la! Avec EF, vous pouvez facilement créer de jolis modèles d'objets dans votre code à partir de ces tables de la base de données –