2010-06-29 139 views
0

这里指定的外键是我的表结构..实体框架:如何在实体

简介:简档(PK),摘要名称VARCHAR(50),GenderID(FK)

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

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

在实体框架,当我更新与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,那么我正在更新原始性别查找表,这不是什么我想要。

我很困惑..

谢谢..

回答

1

如果你要回去看看两性的仅仅是文字说明,那么这就是你要做的最好的(虽然我会可能会添加StringComparison.OrdinalIgnoreCaseEquals)。如果你有PK,还有其他选择。

1

对于这些信息来说,继续调用数据库似乎有很多努力。你能不能检索一次值对,例如在Application_Start,把它放在Cache,然后根据需要引用它?毕竟,价值观不可能经常改变。

+0

不成熟的优化是万恶之源。 – 2010-06-29 15:14:13

+0

同意。在这种情况下很难评估。但是对数据库进行不必要的调用肯定会对性能产生负面影响。 – DOK 2010-06-29 15:28:36