数据库加入实体框架

时间:2012-02-02 20:42:25

标签: c# entity-framework

我是ASP.NET MVC 3的新手,我正在网上搜索,但我没有发现如何使用加入ASP.NET MVC 3 。例如,在我的社交网络项目中,我希望获得所有评论的帖子。我正在使用:

var myobj = DB.Comments.Include("Post").ToList();

但这只显示那些有评论的帖子。我想显示所有帖子,然后显示各自的评论。

我问了一个类似的问题,人们回复说使用

var myobj = DB.Post.Include("Comments").ToList();

但那是错的。我对数据库的了解是说帖子有评论,而不是评论有帖子。简单的COMMENT有一个来自POST的外键。

如何在简单的数据库查询或方法中解决此问题?

    var myobj = from u in DB.Posts
                    join b in DB.Comments
                    on u.UserID equals b.UserID
                    into obj
                    from ua in obj.DefaultIfEmpty()
                    select new { userComments = (ua == null) ? "" : ua.UserComments, UserPosts = u.UserPosts };
    return view(myobj.ToList());

如果我使用上面的内容,那么我无法将其传递给视图,因为它是一个SQL查询,and视图需要一个模型,无论如何。两种情况下的完整解决方案是什么,即使用SQL查询还是有其他方法吗?

1 个答案:

答案 0 :(得分:0)

问题是你正在进行内部联接,AKA只是加入。这意味着它必须匹配。

相反,请使用外部联接。 Example