Как я могу исправить «ObjectContext был удален ошибка» - PullRequest
0 голосов
/ 18 февраля 2020

Я разработал приложение со структурой сущностей. Иногда я получаю сообщение об ошибке «Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.» это из. Я был бы очень признателен, если бы вы могли помочь

Мой DatabaseContext:

   public class DatabaseContext :DbContext 
    {
       public DbSet<EvernoteUser> EvernoteUsers { get; set; }
       public DbSet<Note> Notes { get; set; }
       public DbSet<Comment> Comments { get; set; }
       public DbSet<Category> Categories { get; set; }
       public DbSet<Liked> Likes { get; set; }

       public DatabaseContext()
       {           
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext,Configuration>()); 

        }

    }

Мой репозиторий:

public class Repository<T> :IRepository<T> where T : class   
    {        
        private DatabaseContext db;       
            public Repository()
        {
            db = RepositoryBase.CreateContext();

        }

        public List<T> List() 
        {
            return db.Set<T>().ToList(); 
        }

        public List<T> List(Expression<Func<T,bool>> where)
        {
            return db.Set<T>().Where(where).ToList();
        }

        public T Find(Expression<Func<T, bool>> where)
        {
            return db.Set<T>().FirstOrDefault(where);
        }

        public IQueryable<T> ListQueryable() 
        {
            return db.Set<T>().AsQueryable<T>();
        }
    }
}

Мой класс RepositoryBase:

 class RepositoryBase
    {

        protected RepositoryBase()
        {

        }

        private static DatabaseContext _db;
        private static object _lockObjesi = new object();
        public static DatabaseContext CreateContext()
        {
            if (_db == null)
            {
                lock (_lockObjesi)  
                {
                    if (_db == null)
                    {
                        _db = new DatabaseContext();
                    }
                }
            }
            return _db;
        }
    }

Примечание Entity:

    public class Note : MyEntitesBase
    {       
        public string Tittle { get; set; }
        public string Text { get; set; }
        public bool IsDraft { get; set; }
        public int LikeCount { get; set; }
        public int CategoryID { get; set; }

        public virtual EvernoteUser Owner { get; set; } 
        public virtual List<Comment> Comments { get; set; } 
        public virtual Category Category { get; set; } 
        public virtual List<Liked> Likes { get; set; } 

        public Note()
        {
            Comments = new List<Comment>();
            Likes = new List<Liked>();
        }

    }

Комментарий Entity:

    public class Comment : MyEntitesBase
    {
        public string Text { get; set; }
        public bool CommentStatus { get; set; }

        public virtual Note Note { get; set; }
        public virtual EvernoteUser Owner { get; set; } 
    }
...