【问题标题】:asp.net subsonic 2.2 paging linked table collectionasp.net subsonic 2.2 分页链接表合集
【发布时间】:2010-12-26 19:18:07
【问题描述】:

我正在为我的 CMS 创建一个小型论坛,并且我正在使用 subsonic 2.2 作为我的 DAL。 我正在像这样加载我的头:

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 和 pagesize,但我认为这可以更容易地完成?

我还想知道仅使用 item.ForumPosts() 或启动新查询是否会对性能产生任何影响,我认为论坛帖子已经在 ForumThreads 集合中,不需要新的数据库调用权?

我希望有人能指出我正确的方向! 感谢您抽出宝贵时间,祝您圣诞快乐。

亲切的问候, 标记

【问题讨论】:

    标签: asp.net subsonic paging


    【解决方案1】:

    这有点晚了,但是。您可以不使用查询工具,而是使用以下内容:

    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();
    

    您甚至可以在 Where 方法重载之一中使用比较。

    分页结果,我相信你可以做到,但我这里没有亚音速的 atm,我在 2.2 版的 docos 中找不到任何东西,不过 v3 有一些东西。

    关于您的第二个问题,Subsonic 使用集合的延迟加载,这意味着当您执行 ForumPosts 方法时,它会发出另一个数据库调用来检查该集合。父实体并非如此,这里的规则是,如果它是一个方法,例如:ForumPosts() - 完成了一个新的数据库调用,它是一个属性,例如:post.Thread,它将被加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多