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