2014-10-05 12 views
7

Si è verificato un errore successivo durante il tentativo di convertire l'oggetto entità nella stringa JSON. Sto usando C# MVC4 con la progettazione del primo DB del codice. Ciò è dovuto al fatto che gli FK e le relazioni tra tabelle creano questo problema. Quale sarà la soluzione?Errore Entità a JSON - È stato rilevato un riferimento circolare durante la serializzazione di un oggetto di tipo

Un riferimento circolare rilevato durante la serializzazione di un oggetto di tipo System.Data.Entity.DynamicProxies.User

mio codice è

User ma = db.user.First(x => x.u_id == id); 
    return Json(ma, JsonRequestBehavior.AllowGet); 

risposta

16

sua perché sta tentando di caricare oggetti figlio e potrebbe creare un ciclo circolare che non finirà mai (a => b, b => c, c => d, d => a)

è possibile disattivarlo solo per quel particolare momento come segue.Quindi dbcontext non caricherà i clienti ch oggetti ILD a meno metodo includono viene chiamato sul vostro oggetto

db.Configuration.ProxyCreationEnabled = false; 
    User ma = db.user.First(x => x.u_id == id); 
    return Json(ma, JsonRequestBehavior.AllowGet); 
+0

Grazie mille. Funziona bene ora. devo abilitarlo dopo le parole? –

+0

No, non è necessario per –

+0

var response = client.PostAsync ("api/myController/myAction", nuovo StringContent (new JavaScriptSerializer(). Serialize (utente), Encoding.UTF8, "application/json")). Risultato; Sto affrontando lo stesso errore, puoi aiutarmi a risolverlo – Vijayaraghavan

0

ho avuto lo stesso problema, quello che ho fatto è avere superato colonna solo necessario per visualizzare, Nel mio mio caso. solo 2.

List<SubCategory> lstSubCategory = GetSubCateroy() // list from repo 

var subCategoryToReturn = lstSubCategory.Select(S => new { Id = S.Id, Name = S.Name }); 

return this.Json(subCategoryToReturn , JsonRequestBehavior.AllowGet); 

Circular reference detected exception while serializing object to JSON

3

Il mio problema è risolto utilizzando questo:

//initialize model db 
testdbEntities dc = new testdbEntities(); 
//get employee details 
List<Employee1> lst = dc.Employee1.ToList(); 
//selecting the desired columns 
var subCategoryToReturn = lst.Select(S => new { 
    Employee_Id = S.Employee_Id, 
    First_Name = S.First_Name, 
    Last_Name = S.Last_Name, 
    Manager_Id = S.Manager_Id 
}); 
//returning JSON 
return this.Json(subCategoryToReturn , JsonRequestBehavior.AllowGet); 
0

si sta tentando di caricare oggetti figlio e può essere la creazione di alcune proprietà anello circolare che non finirà mai .

anche di utilizzare [ScriptIgnore], non serializzare la proprietà pubblica o di un campo pubblico un'occhiata a questo:

public class BookingHotel : IntBaseEntity    
    {  
     public string BookingName { get; set; }  
     public string BookingReference { get; set; }  
     public DateTime? CheckInDate { get; set; }  
     public DateTime? CheckOutDate { get; set; }  
     public int HotelId { get; set; }  
     [ScriptIgnore]  
     public Hotel Hotel { get; set; }   
    }   
Problemi correlati