一个linq查询加载多对多关系

时间:2011-07-27 20:17:10

标签: linq-to-sql many-to-many

有很多类似的问题,我在发表这个问题之前做了我的研究。

我有3个表,它有多对多关系。

发布:PostID,PostName

标记:TagId,TagName

PostTag:PostTagID,PostID,TagID

这是控制器中的代码。

    public ActionResult List(int page = 1, int record = 10)
    {
        return View((IEnumerable<Post>)GetPosts(page, record));
    }

    public IList<Post> GetPosts(int page = 1, int record = 10)
    {
        var options = new DataLoadOptions();

        options.LoadWith<Post>(p => p.PostTags);
        options.LoadWith<PostTag>(pt => pt.Tag);

        using (var db = new mvc3codesDataContext())
        {
            db.LoadOptions = options;

            return (from p in db.Posts select p).ToList();
        }


    }

这是我视图文件中的代码。

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.PostID)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PostName)
        <br />

        @foreach (var pt in item.PostTags)  -----> this part not working. 
        {                                 

        }
    </td>
</tr>

}

它显示了帖子列表,但我不知道如何输出标签。

1 个答案:

答案 0 :(得分:0)

在您的示例中,pt是PostTag,而不是Tag本身。在这种情况下,您需要将多 - 多关系更多地视为1-0 .. * - 1。在这种情况下,您将访问pt.Tag.Property。