2015-07-17 4 views
2

J'utilise asp.net mvc5 avec EF, dans cette petite chaîne que j'ai reçue "L'instance ObjectContext a été supprimée et ne peut plus être utilisée pour les opérations nécessitant une connexion". Qu'est-ce qui ne va pas?ASP.NET MVC5: L'instance ObjectContext a été supprimée

public JsonResult GetResponibleParty() 
{ 
    List<CI_ResponsibleParty> resParty; 
    using (MetabaseDbContext context = new MetabaseDbContext()) 
    { 
     resParty = context.SetOfResponsibleParty.ToList(); 
     return Json(resParty, JsonRequestBehavior.AllowGet); 
    }  
} 
+0

peut vous montrer ce que 'CI_ResponsibleParty' contient? Peut-être qu'il a quelques références, cela ne charge pas avec 'ToList()', mais ils ont besoin après. Il est donc préférable de créer 'ResponsiblePartyViewModel' qui ne possède que les propriétés dont vous avez besoin pour résoudre définitivement votre problème. –

+0

Où cette erreur est-elle affichée? Pourriez-vous montrer toute la classe? – Kamo

+0

teo van kot: oui, tu as raison. Le problème était dans le processus de chargement de LazyLoading. – Andrey

Répondre

0

Solution trouvée. Dans ce cas m'a aidé 2 méthodes:

1) context.Configuration.LazyLoadingEnabled = false; 
2) or using .Include() 
+0

La solution à ce problème est de retourner des modèles d'affichage au lieu de modèles Entity Framework. –

+0

Mais dans la méthode de ce contrôleur, j'ai besoin de retourner Json – Andrey

+0

Ce que vous devez finalement faire est de retourner un objet simple que vous pouvez mapper votre modèle EF et retourner à la place de votre modèle EF. Cet objet est souvent appelé le modèle View ou un objet DTO (Data Transfer Object). Vous ne voulez jamais accepter ou renvoyer des objets de modèle de base de données dans vos actions de contrôleur. –

1

Déplacez votre instruction return après le bloc using. Vous avez déjà créé une liste et l'avez conservée dans une variable.

public JsonResult GetResponibleParty() 
{ 
    List<CI_ResponsibleParty> resParty; 
    using (MetabaseDbContext context = new MetabaseDbContext()) 
    { 
     resParty = context.SetOfResponsibleParty.ToList(); 
    }  
    return Json(resParty, JsonRequestBehavior.AllowGet); 
} 
+0

Je ne pense pas que ce soit le problème ici. – Kamo

+0

Thx, mais cela ne marche pas =) – Andrey