Я пытаюсь найти чистое и эффективное решение для этой проблемы, но застрял как-то.
Общая информация:
-ASP.Net C # приложение (.Net 3.5)
-MS-SQL Server 2005
Вот так выглядят данные:
Категория -> Шаблон -> Экземпляр
Категория может содержать несколько шаблонов.
Шаблон может содержать несколько экземпляров.
Существует класс для каждого из этих 3 и соответствующая таблица базы данных с большим количеством столбцов.
Я хочу загрузить полную категорию из базы данных в объект класса C # Category, включаявсе связанные объекты шаблона и экземпляра.
Теперь у меня есть два варианта:
1) Выполнить объединение всех трех таблиц и сразу прочитать все данные.
Upside : намного быстрее на стороне базы данных, вся информация в одном запросе.
Downside : я передаю много избыточных данных, потому что в каждой строке есть одна и та же категория иданные шаблона для каждого экземпляра.
Пример (упрощенно):
CategoryID | CategoryName | TemplateID | TemplateName | InstanceID | InstanceName
1 | FirstCategory | 1 | FirstTemplate | 1 | FirstInstance
1 | FirstCategory | 1 | FirstTemplate | 2 | SecondInstance
1 | FirstCategory | 1 | FirstTemplate | 3 | ThirdInstance
1 | FirstCategory | 1 | SecondTemplate | 4 | FourthInstance
2) Я запрашиваю каждую таблицу отдельно, сначала собирая данные категории, затем связанные данные шаблонас идентификатором категории и т. д.
Upside : Интуитивно понятный подход, легче обрабатывать на стороне кода, лишние данные не извлекаются.
Downside :Несколько запросов к серверу, возможно, медленнее.
Какой лучший путь сюда?Я пропускаю опцию?
Решение 1, кажется, имеет лучшую производительность, но для меня это выглядит "нечистым".Мне нужно было бы получить данные для категории из целого ряда строк данных.
Если я выберу решение 1, какой лучший способ получить данные категории и шаблона?
Считать их изПервая строка данных и создать новый экземпляр после изменения значения?
Есть ли какая-то группировка?
Заранее спасибо!Эта проблема вызывает у меня головную боль с незапамятных времен.