Entity framework 实体框架:如何在实体中分配外键
这是我的桌子结构 配置文件:ProfileID(PK)、ProfileName varchar(50)、GenderID(Fk) 性别:GenderID(PK),GenderName varchar(50) 性别表有两个可能的值:男性、女性 在entity framework中,当我使用GenderID更新概要文件时,我使用以下代码: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(
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,还有其他的选择。为了获取这些信息,一直调用数据库似乎需要付出很多努力。您是否可以一次检索一对值,例如在应用程序启动
中,将其放入缓存
,然后根据需要引用它?毕竟,这些值不太可能经常改变。过早优化是万恶之源。同意。在这种情况下很难评估。但对数据库进行不必要的调用肯定会对性能产生负面影响。