如何进行急切加载和离开加入?

时间:2013-07-28 07:27:54

标签: linq c#-4.0 entity-framework-5

我的数据库中有两个表格采用1:N关系,我想用急切的加载进行左连接查询。

我的表是:

  • VideosIDVIdeo, Name...
  • VersionsIDVersion, IDVideo, Name, Avaliable...

嗯,在一个视频中,我可以有很多版本(DVD,Blu-Ray等),只有一个版本可以属于视频。

我想获得我所拥有的所有视频至少一个可用版本(也许某些版本拥有一位朋友)。

我想知道我是否至少有一个版本可以看到,因为我有这个版本。另外我想在视频实体中的版本集合中我希望拥有我拥有的所有版本(无论一个版本是否可用,我想知道哪个版本可用,哪个版本没有)。

我该怎么做这个查询?我想使用急切加载只对数据库进行一次查询。我更喜欢使用原始SQL进行查询,但原始SQL不允许使用预先加载。

由于

1 个答案:

答案 0 :(得分:2)

在Video类中创建navigation property,它将保留版本(如果你没有生成它):

public class Video
{
   public Video
   {
       Versions = new HashSet<Version>();
   }

   public int Id { get; set; }
   public string Name { get; set; }

   public virtual ICollection<Version> Versions { get; set; }
}

然后在加载视频时eager loading版本:

var query = db.Videos.Include(v => v.Versions);