如何检索ADO.NET实体中的一个数据库中的记录和所有子记录?

时间:2009-04-27 12:35:06

标签: c# linq entity-framework ado.net linq-to-entities

我想进行一次数据库调用以检索以下数据,但我很难弄清楚LINQ应该是什么样子。这是我当前的实现(我知道它很糟糕!!):

var photos = from photo in entitiesContext.Photo
             join pg in entitiesContext.PhotoGallery on photo.PhotoGallery.PhotoGalleryID equals pg.PhotoGalleryID
             where pg.PhotoGallery == photoGalleryID
             select photo;

var photoList = photos.ToList();

foreach (var photoForLoading in photoList)
{
    photoForLoading.UserReference.Load();
    photoForLoading.PhotoComments.Load();

    foreach (var comment in photoForLoading.PhotoComment)
    {
        comment.UserReference.Load();
    }
}

return photoList;

因此,您可以在上面看到我想要检索:

  • 特定照片库中的所有照片:
    • 每张照片的用户详细信息
    • 每张照片的评论
      • 每条评论的用户详细信息

如何在LINQ中使用ADO.NET实体框架执行此操作?

干杯, 灰分。

2 个答案:

答案 0 :(得分:6)

使用.Include方法加载相关实体。例如:

from photo in entitiesContext.Photo
                          .Include("UserReference")
                          .Include("PhotoComments")
etc...

答案 1 :(得分:1)

创建ObjectQuery时,调用包含方法,传入要自动加载的子实体的名称。如果您要加载多个子实体,则可以将调用链接到包含。

有关详细信息,请参阅此article