![](/img/trans.png)
[英]System.ObjectDisposedException when trying to list an object
[英]System.ObjectDisposedException when trying to receive the data from a List
您好我正在編寫ASP.Net MVC應用程序,我有一個專門用於數據庫連接的特殊類。 在我的HomeController中,我調用這個特殊DB類的靜態方法,它將所需的數據返回到對象中。 我使用實體框架來實現這一目標。 但是當我嘗試使用Controller中的List時,我遇到了一個奇怪的異常。 我認為問題在於我有一個虛擬內部集合,在實體框架方法完成后處理。 我可以訪問主組字段,但無法訪問內部列表。 這是我的模型:
public partial class Teacher
{
public Teacher()
{
this.TeacherRelationships = new List<TeacherRelationship>();
this.CourseTemplates = new List<CourseTemplate>();
this.Orders = new List<Order>();
}
public int ID { get; set; }
public string Name { get; set; }
public string DescriptionText { get; set; }
public Nullable<int> Phone { get; set; }
public string Email { get; set; }
public string PictureFilePath { get; set; }
public virtual ICollection<TeacherRelationship> TeacherRelationships { get; set; }
public virtual ICollection<CourseTemplate> CourseTemplates { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
當我嘗試獲取CourseTemplate結果時,我得到以下異常:
異常詳細信息:System.ObjectDisposedException:ObjectContext實例已被釋放,不能再用於需要連接的操作。
我試圖單獨調查它,但我找到的所有內容都是建議返回List而不是查詢。 這也是我的DBConnection方法的代碼:
public static List<Teacher> returnAllTeachers()
{
using (var db = new Context())
{
var query = from th in db.Teachers
select th;
return query.ToList();
}
}
我究竟做錯了什么?
您的原始查詢僅加載Teacher
對象。 集合設置為延遲加載,直到您訪問它們為止。 不幸的是,您的objectcontext已關閉,因此您無法再從數據庫中獲取任何內容。
最好的解決方法是更新查詢以急切加載您要使用的其他數據:
var query = from th in db.Teachers.Include(t => t.Orders)
select th;
您還必須添加一個using System.Data.Entity
來訪問帶有lambda的Include()
方法。 不要使用帶弦的那個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.