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

时间:2010-06-29 13:40:36

标签: entity-framework entity

这是我的表格结构..

个人资料:ProfileID(PK),ProfileName varchar(50),GenderID(Fk)

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

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

在实体框架中,当我使用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.Gender.GenderID而不是profile.GenderID,那么我正在更新原始的Gender Lookup表,这不是我想要的。

我很困惑..

谢谢..

2 个答案:

答案 0 :(得分:1)

如果您必须查找性别的唯一内容是文字说明,那么这就是您要做的最好的事情(尽管我可能会将StringComparison.OrdinalIgnoreCase添加到Equals)。如果您有PK,还有其他选择。

答案 1 :(得分:1)

为此信息调用数据库似乎需要付出很多努力。您是否可以检索一次值对,例如在Application_Start中,将其放在Cache中,然后根据需要引用它?毕竟,价值不太可能经常变化。