Получить последние действия в списке страниц - PullRequest
2 голосов
/ 11 июля 2011

Я создаю сайт и на главной странице хочу видеть последние обновления (последние комментарии, события и т. Д.) Эти сущности имеют общее свойство, называемое Created (DateTime). Я хочу получить список страниц из этих действий.

У меня есть 3 решения:

  1. Создать новую "таблицу соединений": Id, Comment_Id, Event_Id, ..., Created. Поэтому я могу сказать GetTheLatestActivities(pageSize, pageIndex), и когда я получу этот список, я смогу получить доступ к объектам через свойства навигации. Проблема этого подхода заключается в избыточности данных (таблица +1 (и сложный запрос?))

  2. Использование таблицы на иерархию (TPH): все «действия» будут храниться в одной таблице, поэтому я могу легко фильтровать записи. Проблема с этим подходом состоит в том, что моя схема таблицы sql была бы денормализована, а целостность данных была бы слабой (из-за того, что поля поддерживали бы наследование)

  3. сущности GetAll (Comments, Events и т. Д.), И отфильтруйте этот составной список с помощью LINQ (каждый объект поддерживает ICreated интерфейс, поэтому я могу OrderBy Date и использовать Skip/Take). Очевидная проблема заключается в производительности: я получаю все записи из базы данных в каждом запросе и фильтрую их на «стороне клиента».

Я думаю, что лучшее - это первое, или есть лучшее решение?

Спасибо

1 Ответ

0 голосов
/ 11 июля 2011

Вы можете создать представление, представляющее объединение общих полей:

select t1.Table1Id as Id, t1.Name as Description, t1.Job, t1.Created from Table1 t1
union all
select t2.Table2Id as Id, t2.Description, null as Job, t2.Created from Table2 t2

Это представление может быть добавлено к вашей модели, и вы можете выполнить обычное разбиение по страницам. Пропустить / взять против него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...