Entity framework 实体框架数据优先:自动加载关联数据

Entity framework 实体框架数据优先:自动加载关联数据,entity-framework,Entity Framework,我正在尝试对现有数据库使用实体框架。使用代码优先的方法,我得到了以下自动创建的模型(除其他外,我试图缩短代码以了解问题的本质): 如何让MoviesPictures集合自动加载?要么渴望,要么懒惰 更新:实际上有一个额外的关联: 电影 MoviesPictures模型的定义如下: public partial class MoviesPictures { public int MoviePictureID { get; set; } public int MoviePicture

我正在尝试对现有数据库使用实体框架。使用代码优先的方法,我得到了以下自动创建的模型(除其他外,我试图缩短代码以了解问题的本质):

如何让MoviesPictures集合自动加载?要么渴望,要么懒惰

更新:实际上有一个额外的关联:

电影

MoviesPictures模型的定义如下:

public partial class MoviesPictures
{
    public int MoviePictureID { get; set; }
    public int MoviePictureMovieID { get; set; }
    public int MoviePicturePictureID { get; set; }
    public System.DateTime MoviePictureAddDatetime { get; set; }
    public bool MoviePictureRemoved { get; set; }
    public Nullable<System.DateTime> MoviePictureRemovedDatetime { get; set; }

    public virtual Movies Movies { get; set; }
    public virtual Pictures Pictures { get; set; }
}
这不起作用-我得到一个运行时异常,即电影中没有使用导航属性定义图片。这当然有道理。我只是不知道如何指定查询

另一件让我担心的事。。。上面的Include()语句在编译时不会捕获任何错误。有没有办法以类型安全的方式指定这一点

/卡斯滕

您希望执行以下操作:

var movie = from m in dbContext.Movies.Include("MoviesPictures")
            where m.MovieId == 5
            select m;
这是急切地从“MoviesPictures”表中获取记录。您可以在此处阅读更多关于它的信息:。另外,如果你在“实体框架包括”上搜索,你可能会找到更多的信息

更新

您可能能够执行
.Include(“moviescients.Pictures”)
这取决于您的设置方式。如果没有,那么您需要进行一些连接;这里有一篇很好的博文:关于加入


在“类型安全”的情况下进行;这是“包括”相关记录的唯一方法。正如我提到的,您可以使用连接,这可能更接近于“类型安全”。

谢谢Gorilla。这正是我所需要的。我已经用两个后续问题更新了这个问题,希望您也能回答。我刚刚想出了一个很好的解决方法:从dbContext.Movies.Include(“MoviesPictures.Pictures”)中的m开始,但我的另一个类型安全的即时加载问题仍然存在:-)
public partial class MoviesPictures
{
    public int MoviePictureID { get; set; }
    public int MoviePictureMovieID { get; set; }
    public int MoviePicturePictureID { get; set; }
    public System.DateTime MoviePictureAddDatetime { get; set; }
    public bool MoviePictureRemoved { get; set; }
    public Nullable<System.DateTime> MoviePictureRemovedDatetime { get; set; }

    public virtual Movies Movies { get; set; }
    public virtual Pictures Pictures { get; set; }
}
var model = from m in db.Movies.Include("MoviesPictures").Include("Pictures")
            where m.MovieID == id
            select m
var movie = from m in dbContext.Movies.Include("MoviesPictures")
            where m.MovieId == 5
            select m;