структура сущности: как назначить внешний ключ в сущности - PullRequest
0 голосов
/ 29 июня 2010

Вот моя структура таблиц ..

Профиль: 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, я обновляю исходную таблицу «Поиск по полам», а это не то, что мне нужно.

Я в замешательстве ..

Спасибо ..

Ответы [ 2 ]

1 голос
/ 29 июня 2010

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

1 голос
/ 29 июня 2010

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

...