views:

883

answers:

3

Hi, I have had a breakdown on my webhost. Now finally it is up again, and I have yet to know what the technicians fixed. The problem is now I receive the error:

Calling 'Read' when the data reader is closed is not a valid operation. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Calling 'Read' when the data reader is closed is not a valid operation.

Source Error: 

 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

    Stack Trace:   

[InvalidOperationException: Calling 'Read' when the data reader is closed is not a valid operation.]
   System.Data.Common.Internal.Materialization.Shaper`1.StoreRead() +93
   System.Data.Common.Internal.Materialization.SimpleEnumerator.MoveNext() +30
   System.Linq.Enumerable.Single(IEnumerable`1 source) +119
   System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2(IEnumerable`1 sequence) +5
   System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +25
   System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +43
   System.Linq.Queryable.Count(IQueryable`1 source) +240
   BusinessLayer.Car.GetCarCount() in xxx
   UserControls_SiteInfo.Page_Load(Object sender, EventArgs e) +225
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

I have not changed anything, so could it be some permissions? I can still log onto my database with the same credentials so it is not the login info. Anyone have an idea?

UPDATE: I have found out that I get the error when I try to convert the IQuery to a list. I never received the error before, does this give any of you a clue what could be wrong?

+3  A: 

The entity framework uses lazy evaluation. This means that the query is not actually executed against the database when you create it, it is executed when you actually need the data out. Consequently, the data context must still be open when you process the query.

Converting the query to an IList will force the query to be executed. If the data context is closed at this point you will get an error like this.

I can't explain why you didn't get this before if you haven't changed any code, but this is what I would be looking at.

Perhaps post your code, this might help diagnose the problem.

Simon P Stevens
A: 

I have found out that it is an error with either my database or with the network at my webhost, so it has nothing to do with the entity framework itself.

Dofs
Stackoverflow doesn't work like a discussion board. You should edit your original question and provide this extra information at the bottom. If you know the problem is with the database or network, how do you know this? What have you tried and what results did you get? Providing this information might help someone with diagnosing the problem.
Simon P Stevens
A: 

Hi,

Changing IEnumerable to IList resolved the issue for me I'm returning a complex object from a sproc

CohenA