2014-10-05 22 views
7

türünde bir nesneyi serileştirirken dairesel bir başvuru saptandı varlık nesnesini JSON String'e dönüştürmeye çalışırken aşağıdaki hata oluştu. İlk DB tasarımı kod ile C# MVC4 kullanıyorum. Kesintisizdir çünkü FK'ler ve tablolar arasındaki ilişkiler bu sorunu yaratır. Geçici çözüm ne olacak? çocuğun nesneleri yüklemeye çalışırken ve çünkü tipi System.Data.Entity.DynamicProxies.User bir nesne seri hale ederkenjson hatası için varlık -

bir döngüsel başvuru algılandı

kodum

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

cevap

16

onun hakkıdır hiç bitmeyecek bazı döngüsel döngüler oluşturabilir (a => b, b => c, c => d, d => a)

yalnızca aşağıdaki gibi bir an için kapatabilirsiniz. dbcontext müşteri ch yüklenmeyecek yöntemini dahil olmadıkça ild nesneleri nesne ben aynı sorunu yaşıyordu

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

Çok teşekkürler. Şimdi iyi çalışıyor. sonradan bunu etkinleştirmem gerekiyor mu? –

+0

Hayır, –

+0

var response = client.PostAsync ("api/myController/myAction", yeni StringContent (yeni JavaScriptSerializer(). Serialize (kullanıcı), Encoding.UTF8, "application/json")). Sonuç; Aynı hatayla karşılaşıyorum, çözmeme yardım edebilir misin? – Vijayaraghavan

0

üzerine denir, ne yaptım benim benim durumda, görüntülemek geçirilen yalnızca gerekli sütun olması. Sadece 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

Benim sorunum bu kullanarak çözülür: çocuğun nesneleri yüklemeye çalışıyor ve hiç bitmeyecek bazı dairesel döngü özelliği yaratıyor olabilir

//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

.

ayrıca bakış, bu kamu mülkü veya kamu alanını seri olmayacak, [ScriptIgnore] kullanın:

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; }   
    }   
İlgili konular