这是我的表格结构..
个人资料: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表,这不是我想要的。
我很困惑..
谢谢..
答案 0 :(得分:1)
如果您必须查找性别的唯一内容是文字说明,那么这就是您要做的最好的事情(尽管我可能会将StringComparison.OrdinalIgnoreCase
添加到Equals
)。如果您有PK,还有其他选择。
答案 1 :(得分:1)
为此信息调用数据库似乎需要付出很多努力。您是否可以检索一次值对,例如在Application_Start
中,将其放在Cache
中,然后根据需要引用它?毕竟,价值不太可能经常变化。