Ну, это не обычный повторяющийся вопрос. Потому что дублирование в определенных полях (UserId и Name) в строке и мне нужно создать только один объект для каждого UserId
и все еще собирает другую связанную уникальную информацию в строке.
Это не первый мой вопрос об этой проблеме, см. Мой первый вопрос об этой проблеме
Это структура базы данных, которую я использую
Таблица пользователей
UsedId UserName
-------- ----------
1 Mike
2 Raul
3 Nick
Таблица HasPrivileges
UsedId PrivilegeId
-------- --------------
1 1
1 2
1 3
2 2
2 3
Таблица привилегий
PrivilegeId Privilege
------------- ------------
1 Create
2 Edit
3 Delete
Таблица HasMedals
UsedId MedalsId
-------- --------------
1 1
1 2
2 2
3 1
Таблица медалей
MedalsId Medal
------------- ------------
1 C#
2 VB.NET
Теперь у меня есть DAL, который запрашивает мою базу данных
и BLL, который имеет два свойства int для идентификатора и строку для имени, два свойства списка List и List и еще два класса для типов привилегий и медалей
и моя страница asp.net (как слой представления), которая использует ObjectDataSource в качестве источника данных для привязки.
Я использую метод в своем DAL, чтобы объединить все предыдущие таблицы и выбрать UserId, UserName, Privellege, Medal и вернуть список всех пользователей.
Проблема SQL должен будет дублировать идентификатор пользователя и имя более одного раза, каждый раз со значением привилегии, и снова идентификатор и пользователь плюс привилегия с каждым значением медали , и мне нужно просто иметь ОДИН объект для удержания пользователя.
Пример результата для запроса, если я только что выбрал UserId = 1
1 Mike Create C#
1 Mike Edit C#
1 Mike Delete C#
1 Mike Create VB.NET
1 Mike Edit VB.NET
1 Mike Delete VB.NET
Есть идеи, как лучше всего справиться с этой ситуацией (с точки зрения архитектуры и производительности)
и где с этим обращаться - я имею в виду, на каком слое -.
P.S: Если у меня есть другие варианты, кроме DataSet, я бы предпочел их избегать!
Спасибо за ваше время, ребята =)