实体框架中的数据库加入

问题描述:

我是ASP.NET MVC 3中的新成员,并且正在Internet上进行搜索,但我没有发现任何关于如何使用ASP.NET MVC 3中的加入。例如,在我的社交网络项目中,我想通过评论获得所有帖子。我正在使用:实体框架中的数据库加入

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

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

我曾问过类似的问题,人们回答说,使用

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

但是,这是错误的。我对数据库的了解是说一个帖子有评论,而不是评论有帖子。简单评论有一个来自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查询还是有其他方法?

+0

这与MVC无关...... – 2012-02-02 20:45:04

+0

因为您已将ASP.NET/MVC(Web前端API)与实体框架(启用LINQ提供程序的ORM)相混淆,因此您找不到任何东西 – 2012-02-02 20:45:34

+0

然后先生如何解决这种善意帮助我 – 2012-02-02 21:06:15

问题是你正在做一个内部连接,也就是加入。这意味着它必须匹配。

而是使用外部联接。 Example