1

こんにちは、ASP.Net MVC アプリケーションを作成しています。データベース接続専用の特別なクラスがあります。私の HomeController では、必要なデータをオブジェクトに返す、この特別な DB クラスの静的メソッドを呼び出します。これを実現するために、Entity Framework を使用します。ただし、コントローラーからリストを使用しようとすると、奇妙な例外が発生します。問題は、エンティティ フレームワーク メソッドの実行後に破棄される仮想内部コレクションがあることだと思います。メイン グループ フィールドにはアクセスできますが、内部のリストにはアクセスできません。これが私のモデルです:

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 インスタンスが破棄され、接続を必要とする操作に使用できなくなりました。

私はそれを一人で調査しようとしましたが、私が見つけたすべては、クエリの代わりにリストを返すという提案です. DBConnection メソッドのコードも次のとおりです。

    public static List<Teacher> returnAllTeachers()
    {
        using (var db = new Context())
        {
            var query = from th in db.Teachers
                        select th;

            return query.ToList();
        }
    }

私は何を間違っていますか?

4

1 に答える 1