【问题标题】:Linq2Sql Many:Many question, How would you do this?Linq2Sql Many:很多问题,你会怎么做?
【发布时间】:2010-09-26 23:59:23
【问题描述】:

我知道 Linq2Sql 不支持 many:many,但我正在研究解决方法

我正在使用我的小 SO 克隆,我有一个带有问题的表和一个带有标签的表和一个链接表 QuestionTag,所以我在问题和标签之间有一个经典的多:多关系。

为了在首页显示问题列表,我有这门课,我想从 Linq2Sql 查询中填写

public class ListQuestion
{
   public int QuestionID { get; set; }
   public string Title{ get; set; }
   public IEnumerable<Tag> Tags { get; set; }
}


public IEnumerable<ListQuestion> GetQuestions()
{
   from q in Questions
   .................
   select new ListQuestion{ ... }
}

问题是我应该如何填写标签集合。 我发现这不可能在 1 个单一查询中完成,因此我将其分为 2 个查询,1 个用于获取问题,1 个用于获取标签,然后尝试加入它们。 我知道 Entity 框架支持 many:many 那么他们是如何做到的呢?你会怎么做?任何替代方法?查询当然应该是高效的。

【问题讨论】:

    标签: c# linq-to-sql entity-framework many-to-many


    【解决方案1】:

    这可能适用于您的情况;

    from q in Questions
    select new ListQuestion 
    { 
      Tags = q.QuestionTags.Select(qt => qt.Tag),
      QuestionId = q.ID,
      Title = q.Title
    }
    

    【讨论】:

    • 它有效。非常感谢。我看不到实际查询的样子。我想避免每个问题都触发 1 个查询来获取标签。
    • 这是否两次往返数据库?我在这里也有同样的问题:stackoverflow.com/questions/371279/…
    • 不,到数据库只有一次往返。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2011-07-20
    相关资源
    最近更新 更多