我有一个有4张桌子的模型 页面> ContentHeaders>内容>图片
我正在使用以下代码进行延迟加载,但它的工作原理有点慢
var thisPage = db.pages(id)
所以我尝试使用急切的加载,但无法让它通过内容加载器工作,intellisence赢得了不接受下一个级别:内容
var thisPage = db.pages.Where(a => a.pageKey == pageKey).Include(b => b.ContentHeaders).Include(b=>b.contents).FirstOrDefault()
我猜这是因为内容是contentheaders的属性,而不是页面,但不知道如何处理。我还有下一个包含图片的问题(这是1:1的内容)。
这是我所采用的 - 它可以工作,但寻找更清洁(更快)的解决方案
var thisPage = db.pages.Where(a => a.pageKey == pageKey).Include(b => b.contentheaders).FirstOrDefault();
foreach(contentheader in thisPage.contentheaders)
{
m.contents =db.contents.Where(b => b.contentKey== m.contentKey).ToList();
foreach(content ml in m.contents)
{
ml.picture = db.pictures.Where(b => b.pictKey == ml.pictKey).FirstOrDefault();
}
}
Table Structure is pretty straightforward
pages: (primary) pagekey.... other fields
contentheaders (primary) mkey (foreign n:1 ) pagekey>pages.pagekey... other fields
content: (primary) mlkey (foreign n:1) mkey>contentheaders.mkey... other fields
班级模型
public partial class page
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public page()
{
this.contentHeaders= new HashSet<contentHeader>();
}
public short mKey{ get; set; }
public short pageKey { get; set; }
public virtual ICollection<contentHeader> contentHeaders{ get; set; }
}
public partial class contentHeader
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public contentheader()
{
this.contents= new HashSet<content>();
}
public virtual page page { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<content> content{ get; set; }
}
public partial class content
{
public short mlKey { get; set; }
public short mKey{ get; set; }
public virtual contentHeader contentheader{ get; set; }
}
我上面提到了一张图片,但忘记了