我正在研究Asp.Net MVC項目,並使用EF來訪問數據庫。由於某些原因,我無法首先使用代碼,所以我使用數據庫第一方法,並且lazyLoading在啓用時不起作用!懶加載不工作數據庫的第一種方法
public ActionResult ListAll()
{
List<Album> albums = new List<Album>();
using (newsDBEntities context = new newsDBEntities())
{
albums = context.Albums.ToList();
return View(albums);
}
}
和視圖
@foreach(project.Models.Album專輯型號) {
List<project.Models.Image> img = album.Images.Take(3).ToList();
<div class="albumHolder">
@foreach (var item in img)
{
<div class="imageHolder">
<img src ="@item.imageURL" width="200px" height="200px" />
</div>
}
<p class="albumP">@album.albumName</p>
</div>
}
<div></div>
</div>
:比如我不能處置的DbContext後做類似下面的代碼的一些事情在下面的例外情況中,我試圖在視圖中使用3個模型元素:
ObjectContext實例已被處置,不能再用於需要連接的操作灰。
我想知道爲什麼它不應該加載圖像,而啓用延遲加載。我也想知道爲什麼它可以在控制檯應用程序中執行類似的代碼時起作用!
當處理上下文時,不再有與數據庫的連接。那麼延遲加載如何加載導航屬性而不連接到數據庫呢? – 2014-11-14 23:01:06
這是正確的,但我用.toList(),應強制EF tu執行查詢,然後專輯應該是一個局部變量 – 2014-11-14 23:05:16
你的'相冊'是本地的,但你的'圖像'不是本地... – 2014-11-14 23:09:06