Лучший способ хранения идентификаторов баз данных и имен поиска

В настоящее время я храню список тестов с соответствующей информацией, включая идентификаторы базы данных, внутри статических переменных в моем коде. Вот пример:

public static class IsokineticTests
{
    // Cervical Spine Group
    public static MyopathologyTest NeckFlexors = MyopathologyTest.Create(600, "Neck Flexors");
    public static MyopathologyTest AnteriorObliques = MyopathologyTest.Create(601, "Anterior Obliques");
    public static MyopathologyTest NeckExtensors = MyopathologyTest.Create(602, "Neck Extensors");
    public static MyopathologyTest PosteriorObliques = MyopathologyTest.Create(603, "Posterior Obliques");
    public static MyopathologyTest LateralFlexion = MyopathologyTest.Create(604, "Lateral Flexion");

    // Shoulder Group
    public static MyopathologyTest ShoulderAbductors = MyopathologyTest.Create(610, "Shoulder Abductors");
    public static MyopathologyTest ShoulderExtensors = MyopathologyTest.Create(611, "Shoulder Extensors");
    public static MyopathologyTest ShoulderFlexors = MyopathologyTest.Create(612, "Shoulder Flexors");
    public static MyopathologyTest ShoulderLateralRotators = MyopathologyTest.Create(613, "Shoulder Lateral Rotators");
    public static MyopathologyTest ShoulderMedialRotators = MyopathologyTest.Create(614, "Shoulder Medial Rotators");
}

Затем они используются для создания тестовой группы с помощью других методов получения статических свойств:

public static class IsokineticTestGroups
{
    public static IsokineticTestGroup CervicalSpine
    {
        get
        {
            return IsokineticTestGroup.Create("Cervical Spine", 
                    new List<MyopathologyTest>
                       {
                            IsokineticTests.NeckFlexors,
                            IsokineticTests.AnteriorObliques, 
                            IsokineticTests.NeckExtensors,
                            IsokineticTests.PosteriorObliques,
                            IsokineticTests.LateralFlexion
                       });
        }
    }
}

Проблема, с которой я столкнулся сейчас, заключается в том, что практически невозможно найти MyopathologyTest для определенного идентификатора. Одним из решений было бы создать словарь и вручную вставить все эти тесты в словарь с идентификатором в качестве ключа. Это похоже на повторение большого количества кода.

Каков правильный способ реализации чего-то подобного? Я думаю, что мне нужно экстернализировать тестовые данные, загружать тесты во время выполнения и генерировать правильные справочные таблицы и группы на лету. . Это правильный подход, на который я должен смотреть, или есть лучший способ?


person Will Eddins    schedule 19.11.2010    source источник
comment
Почему бы вам не хранить все эти данные, включая группы, в базе данных?   -  person BobbyShaftoe    schedule 19.11.2010
comment
Я уже использую базу данных SQLite для результатов тестов, среди прочего, и я полагаю, что думал, что в будущем изменить некоторые данные будет слишком сложно. Однако я не вижу причин, по которым я не мог бы иметь отдельную базу данных, содержащую эту информацию, теперь, когда вы и Тим упомянули об этом.   -  person Will Eddins    schedule 19.11.2010


Ответы (1)


Почему бы не хранить тестовую информацию в базе данных, такой как SQLite, и извлекать данные по мере необходимости с помощью библиотек ADO.NET? Время отклика практически мгновенное, поэтому вам не нужно хранить много тестовых объектов в словаре.

person Tim    schedule 19.11.2010
comment
Ну, это приложение, которое будет запускаться на стороне клиента. Идентификаторы базы данных ссылаются на поле TestID в таблице SQLite, в которой хранятся результаты тестов. Для первоначального заполнения тестов в базе данных потребуется сохранить тесты в коде или во внешнем коде, а затем заполнить базу данных при инициализации, а затем для добавления тестов в будущем потребуется обновить базу данных пользователя. Похоже, этот метод просто становится более сложным. Возможно, мне следует просто хранить их в отдельной базе данных... - person Will Eddins; 19.11.2010