2009-04-27 32 views
0

我想进行一次数据库调用来检索以下数据,但我正在努力弄清楚LINQ应该是什么样子。这是我目前的执行(我知道这是不好的!):如何检索ADO.NET实体中的某个数据库中的记录和所有子记录?

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实体框架E用户的详细信息?

干杯, 灰。

回答

6

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

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

我认为这将导致一个SQL语句(与一些内部连接)发送到SQL服务器?此外,照片可能不包含任何评论,我是否需要做某种形式的左外连接? – Ash 2009-04-27 12:44:02

1

在创建的ObjectQuery,请拨打包括方法,传递要自动加载子实体的名称。如果您有多个要加载的子实体,则可以将呼叫链接到“包含”。

查看此article了解更多信息。

相关问题