2010-06-29 141 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