Click here to Skip to main content
15,908,776 members
Home / Discussions / ASP.NET
   

ASP.NET

 
GeneralRe: trying to call a WebApi method along with new Page when button clicked using jQuery Pin
indian1431-Aug-17 7:01
indian1431-Aug-17 7:01 
GeneralRe: trying to call a WebApi method along with new Page when button clicked using jQuery Pin
Richard Deeming1-Aug-17 7:24
mveRichard Deeming1-Aug-17 7:24 
GeneralRe: trying to call a WebApi method along with new Page when button clicked using jQuery Pin
indian1431-Aug-17 13:23
indian1431-Aug-17 13:23 
QuestionI would like to develope new project from scratch. I would like to use ASP.NET MVC 5.0, EntityFramework and SQL Server. Pin
Lad Kunal30-Jul-17 20:14
Lad Kunal30-Jul-17 20:14 
AnswerRe: I would like to develope new project from scratch. I would like to use ASP.NET MVC 5.0, EntityFramework and SQL Server. Pin
Richard MacCutchan30-Jul-17 20:42
mveRichard MacCutchan30-Jul-17 20:42 
AnswerRe: I would like to develope new project from scratch. I would like to use ASP.NET MVC 5.0, EntityFramework and SQL Server. Pin
indian1432-Aug-17 6:57
indian1432-Aug-17 6:57 
QuestionError message: The operation cannot be completed because the DbContext has been disposed Pin
indian14327-Jul-17 11:39
indian14327-Jul-17 11:39 
AnswerRe: Error message: The operation cannot be completed because the DbContext has been disposed Pin
Richard Deeming28-Jul-17 1:31
mveRichard Deeming28-Jul-17 1:31 
It looks like your entity has a navigation property, which isn't being eagerly loaded. When the framework tries to serialize the object to JSON, the main entity tries to load the related entity using lazy-loading. This fails because the DbContext has been disposed.

Entity Framework Loading Related Entities[^]

There are several options to solve this:

1) Turn off lazy loading:
The navigation properties in the returned JSON will all be null.
C#
public List<UserList> Get()
{
    using (AppDevSecEntities ctx = new AppDevSecEntities())
    {
        ctx.Configuration.LazyLoadingEnabled = false;
        return ctx.UserLists.AsNoTracking().OrderByDescending(x => x.LastName).ToList();
    }
}


2) Eagerly load the navigation properties:
You'll need to load all of the navigation properties you need to return. You'll still want to turn off lazy-loading.
C#
public List<UserList> Get()
{
    using (AppDevSecEntities ctx = new AppDevSecEntities())
    {
        ctx.Configuration.LazyLoadingEnabled = false;
        return ctx.UserLists.AsNoTracking().Include(x => x.YourNavigationProperty).OrderByDescending(x => x.LastName).ToList();
    }
}


3) Return a data transfer object (DTO)
Create a specific class containing just the data you need to return. You can either map the entities by hand, or use something like AutoMapper[^] to do the mapping for you.
C#
public List<UserListDto> Get()
{
    using (AppDevSecEntities ctx = new AppDevSecEntities())
    {
        ctx.Configuration.LazyLoadingEnabled = false;
        return ctx.UserLists.AsNoTracking().OrderByDescending(x => x.LastName).ProjectTo<UserListDto>().ToList();
    }
}


4) Store the context at the controller level:
A new instance of the controller class is created to serve each request, so it's safe to store the context at the controller level. You'll need to override Dispose to clean it up.
C#
public class YourController : ApiController
{
    public YourController()
    {
        Context = new AppDevSecEntities();
    }
    
    private AppDevSecEntities Context { get; }
    
    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        if (disposing) Context.Dispose();
    }
    
    public List<UserList> Get()
    {
        return Context.UserLists.AsNoTracking().OrderByDescending(x => x.LastName).ToList();
    }
}


NB: Since you're not updating the entities, it's a good idea to use the AsNoTracking method[^] to load them without tracking.
Entity Framework No-Tracking Queries[^]



"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer


AnswerRe: Error message: The operation cannot be completed because the DbContext has been disposed Pin
Nathan Minier28-Jul-17 1:36
professionalNathan Minier28-Jul-17 1:36 
QuestionUnable to use RequiredValidator control to validate RadioButtonList in Repeater? Pin
samflex26-Jul-17 14:25
samflex26-Jul-17 14:25 
AnswerRe: Unable to use RequiredValidator control to validate RadioButtonList in Repeater? Pin
F-ES Sitecore26-Jul-17 22:45
professionalF-ES Sitecore26-Jul-17 22:45 
GeneralRe: Unable to use RequiredValidator control to validate RadioButtonList in Repeater? (SOLVE) Pin
samflex27-Jul-17 3:05
samflex27-Jul-17 3:05 
QuestionFew questions about web api versioning in core Pin
Mou_kol26-Jul-17 1:38
Mou_kol26-Jul-17 1:38 
QuestionEnable/Disable div based on RadiobuttonList Pin
samflex25-Jul-17 5:41
samflex25-Jul-17 5:41 
AnswerRe: Enable/Disable div based on RadiobuttonList Pin
F-ES Sitecore25-Jul-17 6:30
professionalF-ES Sitecore25-Jul-17 6:30 
AnswerRe: Enable/Disable div based on RadiobuttonList Pin
Richard Deeming25-Jul-17 6:50
mveRichard Deeming25-Jul-17 6:50 
GeneralRe: Enable/Disable div based on RadiobuttonList (SOLVED) Pin
samflex25-Jul-17 9:32
samflex25-Jul-17 9:32 
QuestionVisual Studio & Asp.Net in Web Forms Bad Design view Pin
zequion23-Jul-17 2:23
professionalzequion23-Jul-17 2:23 
QuestionTable resizing in MVC bootstrap Pin
Member 1075459521-Jul-17 7:31
Member 1075459521-Jul-17 7:31 
AnswerRe: Table resizing in MVC Pin
Member 1075459527-Jul-17 10:44
Member 1075459527-Jul-17 10:44 
QuestionResponse.Cache, Code Location Pin
jkirkerx17-Jul-17 9:24
professionaljkirkerx17-Jul-17 9:24 
AnswerRe: Response.Cache, Code Location Pin
Richard Deeming17-Jul-17 10:09
mveRichard Deeming17-Jul-17 10:09 
GeneralRe: Response.Cache, Code Location Pin
jkirkerx18-Jul-17 7:38
professionaljkirkerx18-Jul-17 7:38 
QuestionUsing Visual Studio to debug iHTTPHandler routines Pin
Member 839420716-Jul-17 21:26
Member 839420716-Jul-17 21:26 
Questionwhat is default concurrent requests settings in IIS 8.5 Pin
bhavin chheda16-Jul-17 2:02
bhavin chheda16-Jul-17 2:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.