我正嘗試在現有數據庫中使用實體框架。使用代碼,第一種方法,我已經得到了以下自動創建的模型(其中包括 - 我試圖縮短代碼才能到問題的實質):實體框架數據優先:自動加載相關數據
namespace Fidd.Models
{
using System;
using System.Collections.Generic;
public partial class Movies
{
public Movies()
{
...
this.MoviesPictures = new HashSet<MoviesPictures>();
...
}
public int MovieID { get; set; }
public string MovieName { get; set; }
...
public virtual ICollection<MoviesPictures> MoviesPictures { get; set; }
}
}
所以基本上這是一個電影和電影圖片之間的1-n關係。我仍然在學習EF的過程。
如果我想加載與
var movie = from m in dbContext.Movies
where m.MovieID == 5
select m;
一個電影我如何才能被自動加載的MoviesPictures收藏?無論是渴望還是懶惰。
UPDATE:其實是有一個額外的關聯關係:
電影1..1 MoviesPictures n..1圖片
的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; }
}
有什麼這種方式來加速這個2.在相同的查詢內關聯層?我試圖這樣做:
var model = from m in db.Movies.Include("MoviesPictures").Include("Pictures")
where m.MovieID == id
select m
哪些不起作用 - 我得到一個運行時異常,圖片沒有在電影中的導航屬性定義。當然有道理。我只是不知道如何指定查詢,否則。
另一件讓我擔心的事情......上面的Include()語句在編譯期間沒有發現任何錯誤。有沒有辦法以類型安全的方式指定它?
/卡斯滕
感謝大猩猩。這正是我所需要的。我已經用兩個後續更新了這個問題,希望你也可以回答。 –
我只是想出了這樣一個很好的做法:從dbContext.Movies.Include中的m(「MoviesPictures.Pictures」) - 但我的類型安全急切加載的其他問題仍然是:-) –