Entity framework 实体框架:如何在实体中分配外键

Entity framework 实体框架:如何在实体中分配外键,entity-framework,entity,Entity Framework,Entity,这是我的桌子结构 配置文件:ProfileID(PK)、ProfileName varchar(50)、GenderID(Fk) 性别:GenderID(PK),GenderName varchar(50) 性别表有两个可能的值:男性、女性 在entity framework中,当我使用GenderID更新概要文件时,我使用以下代码: profile.GenderID = Repository. GetGender(

这是我的桌子结构

配置文件:ProfileID(PK)、ProfileName varchar(50)、GenderID(Fk)

性别:GenderID(PK),GenderName varchar(50)

性别表有两个可能的值:男性、女性

在entity framework中,当我使用GenderID更新概要文件时,我使用以下代码:

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


        Repository.Save();
GetGender方法如下所示:

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

}
有更好的方法吗?我觉得我没有像应该的那样使用实体框架

如果我将该值赋给profile.GenderID而不是profile.GenderID,那么我正在更新原始的性别查找表,这不是我想要的

我很困惑


谢谢。

如果你只需要查找性别的文本描述,那么这就是你要做的最好的事情(尽管我可能会在
Equals
中添加
StringComparison.OrdinalIgnoreCase
)。如果你有PK,还有其他的选择。

为了获取这些信息,一直调用数据库似乎需要付出很多努力。您是否可以一次检索一对值,例如在
应用程序启动
中,将其放入
缓存
,然后根据需要引用它?毕竟,这些值不太可能经常改变。

过早优化是万恶之源。同意。在这种情况下很难评估。但对数据库进行不必要的调用肯定会对性能产生负面影响。