asp.net - сборник связанных таблиц подзвуковых 2.2 - PullRequest
1 голос
/ 26 декабря 2010

Я создаю небольшой форум для моей CMS, и я использую Donsonic 2.2 в качестве DAL. Я загружаю свои theads как это:

DAL.ForumThread item = DAL.ForumThread.FetchByID(id);

В моей базе данных моя таблица ForumPosts выглядит так:

ForumPostID | ThreadID | Description | UserID | CreatedOn| etc

Так что теперь, когда у меня есть элемент DAL.ForumThread, я могу загрузить связанный набор сообщений, используя:

item.ForumPosts();

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

Возможно ли это даже при использовании SubSonic 2.2? Обходной путь, который у меня есть сейчас, - это просто создание нового SubSonic.Query и выбор постов по threadid. Там я могу без проблем установить pageindex и pageize, но я думаю, что это можно сделать проще?

Я также хотел бы знать, имеет ли это какое-то значение с точки зрения производительности, просто используя item.ForumPosts () или начиная новый запрос, я думаю, что forumposts уже находятся в коллекции ForumThreads и не требуют нового вызова базы данных

Я надеюсь, что кто-то может указать мне правильное направление! Спасибо за ваше время и счастливого Рождества.

С уважением, Mark

1 Ответ

0 голосов
/ 04 января 2011

Это немного поздно, но.Вы можете вместо использования инструмента Query использовать что-то вроде этого:

ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Load();

Вы можете использовать столько параметров, сколько хотите, просто повторите предложение where, например:

ForumPostsCollection posts = new ForumPostsCollection().Where(ForumPosts.Columns.ThreadId,1).Where(ForumPosts.Active,true).Load();

Вы можете дажеиспользуйте сравнение в одном из методов Где перегрузки.

A для постраничных результатов, я уверен, что вы можете сделать это, но у меня нет дозвона здесь со мной, и я не могу найти что-либо в документах дляВ версии 2.2 есть кое-что для v3.

По поводу вашего второго вопроса, Subsonic использует отложенную загрузку коллекций, что означает, что когда вы выполняете метод ForumPosts, он выполняет другой вызов базы данных, чтобы просмотреть эту коллекцию.То же самое не верно для Родительских сущностей, правило здесь, если это метод, например: ForumPosts () - Новый вызов базы данных выполнен, это свойство, например: post.Thread, он будет загружен.

...