2010-06-29 3 views
0

Вот моя структура таблицы ..сущность: как назначить внешний ключ в сущности

Профиль: ProfileID (PK), ProfileName 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(); 

} 

Есть ли лучший способ Делать это? Я чувствую, что я не использую Entity Framework, как это должно быть ...

Если я присваиваю значение profile.Gender.GenderID в отличие от profile.GenderID, то я обновляю исходную таблицу гендерного поиска, которая не является чем-то Я хочу.

я запутался ..

Спасибо ..

ответ

1

Если единственное, что вы должны смотреть вверх пол является текстовое описание, то это лучшее, что вы собираетесь делать (хотя я бы вероятно, добавьте StringComparison.OrdinalIgnoreCase в Equals). Если у вас есть ПК, есть и другие варианты.

1

Кажется, что нужно много усилий, чтобы продолжать звонить в базу данных для получения этой информации. Не могли бы вы получить пары значений один раз, например, в Application_Start, поместить его в Cache, а затем ссылаться на него по мере необходимости? В конце концов, значения вряд ли будут меняться очень часто.

+0

Преждевременная оптимизация - это корень всего зла. –

+0

Согласовано. Трудно оценить в этой ситуации. Но делать ненужные вызовы в базу данных могут негативно повлиять на производительность. – DOK

Смежные вопросы