代码之家  ›  专栏  ›  技术社区  ›  GC.

SubSonic 3.0 ActiveRecord-构建对象图的首选方法?

  •  1
  • GC.  · 技术社区  · 17 年前

    假设我有一个包含帖子、帖子和标签的论坛系统。

    (简化)表格:

    Thread
    ------
    ThreadID int PK
    Title  varchar(200)
    
    Tag
    ----
    TagID  int PK
    Name  varchar(50)
    
    ThreadTag
    -----------
    ThreadTagID int PK
    ThreadID int FK
    TagID  int FK
    

    因此,SubSonic ActiveRecord模板为我生成了类。

    对于首页,我需要一个线程列表,并将其相关标签列表附加到每个线程上。暂且不谈帖子数量,检索标签并构建此对象图的最佳方法是什么?

    如果我得到这样的线索:

    var threadQuery = Thread.All().Skip(x).Take(n);
    var threadList = threadQuery.ToList();
    

    我是否应该添加一个“ IList<Tag> Tags

    为了检索正确的标签,我应该执行两个查询吗:一个获取ThreadTags,一个获取标签本身:例如。

    var tagLinks = (from t in threadQuery
                            join l in ThreadTag.All() on t.ThreadID equals l.ThreadID
                            select l).ToList();
    
    var tags = (from t in threadQuery
                            join l in ThreadTag.All() on t.ThreadID equals l.ThreadID
                            join tg in Tag.All() on l.TagID equals tg.TagID
                            select tg).ToList();
    

    …然后使用这些列表将标签排序到正确的Thread中。标签列表?

    有更好的办法吗?我认为我不能使用SubSonic使用外键生成的IQuery属性,因为这会触发我列表中每个Threads的数据库调用。

    1 回复  |  直到 17 年前
        1
  •  0
  •   GC.    14 年前

    在使用SubSonic一段时间后,我认为这是最好的方法。对于大型复杂的对象图,Entity Framework似乎更适合。

    推荐文章