2010-06-29 6 views
0

Voici ma structure de tables ..entité: comment attribuer clé étrangère dans une entité

Profil: ProfileID (PK), ProfileName varchar (50), GenderID (Fk)

Sexe: GenderID (PK), GenderName varchar (50)

La table de genre a 2 valeurs possibles: Homme, Femme.

Dans le cadre de l'entité, quand je mets à jour le profil avec GenderID, j'utilise le code suivant:

 profile.GenderID = Repository. 
           GetGender(
            Request.Form["Profile.GenderName"].ToString() 
           ).GenderID; 


     Repository.Save(); 

méthode GetGender se présente comme suit:

public Gender GetGender(string genderName) 
{ 
    return (from gender in db.Genders 
      where (gender.GenderName.Equals(genderName)) 
      select gender).First(); 

} 

Y at-il une meilleure façon de je le fais? J'ai l'impression de ne pas utiliser Entity Framework comme il se doit ...

Si j'affecte la valeur à profile.Gender.GenderID par opposition à profile.GenderID, alors je suis en train de mettre à jour la table originale de recherche de sexe qui n'est pas ce que Je veux.

Je suis confus ..

Merci ..

Répondre

1

Si la seule chose que vous devez rechercher le genre est la description du texte, puis c'est le meilleur que vous allez faire (bien que je probablement ajouter StringComparison.OrdinalIgnoreCase au Equals). Si vous avez le PK, il y a d'autres options.

1

Il semble que beaucoup d'efforts pour continuer à appeler la base de données pour cette information. Pourriez-vous récupérer les paires de valeurs une seule fois, par exemple dans Application_Start, le mettre dans Cache, puis le référencer si nécessaire? Après tout, les valeurs ne sont pas susceptibles de changer très souvent.

+0

L'optimisation prématurée est la racine de tous les maux. –

+0

D'accord. Difficile à évaluer dans cette situation. Mais faire des appels inutiles à la base de données peut certainement avoir un impact négatif sur les performances. – DOK