you app probably fails when multiple users use the site, or if one page does not read all the results of a query.
While a dbcontext can be shared between threads, it does not support two concurrent queries. A second query can not be started until the first query has returned all its results. If you are using a singleton dbcontext, then you need to add locking around the queries. The lock needs to be taken before the query and released after all the entities have been read. You can use a .ToList() to read all the rows.
Be sure tracking is disabled, or you will get memory issues. You probably will anyway as dbcontext was designed to be disposed after each transaction was completed.