I’m following this guide and I am getting an error. Can anyone help me?
The code for my datamodel is below
namespace Datalayer {
public class DataModel {
public DataModel()
{
using (btWholesaleDataContext db = new btWholesaleDataContext()) {
//! requires auth
var MACRequestList = from r in db.btRequests
select new Models.BT.Request {
ID = r.ID,
Date = r.DateTime,
StatusCode = 3,
Status = r.Status
};
MACRequests = MACRequestList.AsQueryable();
}
}
public IQueryable<Models.BT.Request> MACRequests { get; private set; }
}
}
The web service gives the error
Cannot access a disposed
object.Object name: ‘DataContext
accessed after Dispose.’
When I access MACRequests
I have only posted the code I think is broken. If you want to see more just let me know.
Your data context is being disposed at the end of your constructor, at the end of the
using { }block. However when you use the IQueryableMACRequestsproperty, it needs that underlying context, which has since been disposed.One possible way to handle this is to make your class IDisposable and dispose the context that way:
Then you have to make sure that DataModel is properly disposed by whatever uses it.
Another alternative is to make
MACRequeststhe actual list of items instead of the IQueryable: