2017-07-17 97 views
1

我已經閱讀了很多關於這種類型的錯誤:循環引用

「時檢測到循環引用而序列化的對象類型...「 但是,當它發生在ASP.Net MVC Kendo網格操作方法中時,我找不到解決方案。我有以下的操作方法,我想在同一時間插入到另一個相關的表:

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult SeasonTradeCreate([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<BKP_STRADE> models, decimal? DOC_SEQ) 
     { 
      if (models.Any()) 
      { 
       foreach (BKP_STRADE modelItem in models) 
       { 
        Db.BKP_STRADE.Add(modelItem); 
        BKP_STRADE_ROW BKP_STRADE_ROW_OBJ = new BKP_STRADE_ROW(); 
        BKP_STRADE_ROW_OBJ.BSTR_BSTR_SEQ = modelItem.BSTR_SEQ; 
        BKP_STRADE_ROW_OBJ.DOC_SEQ = DOC_SEQ; 
        Db.BKP_STRADE_ROW.Add(BKP_STRADE_ROW_OBJ); 
       } 
       Db.SaveChanges(); 
      } 
      return Json(models.ToDataSourceResult(request, ModelState)); 
     } 

的事情是,它插入到兩個表正常,但我在手術後得到了下面的錯誤,以及:

「序列化類型爲'Tpph.Models.BKP_STRADE'的對象時檢測到循環引用。」

+0

這意味着BKP_STRADE集合引用自身的實體之一。 JS序列化程序的默認設置無法處理。有關更多信息,請參閱https://stackoverflow.com/questions/1153385/a-circular-reference-was-detected-while-serializing-an-object-of-type-subsonic。 –

+0

那我該怎麼辦?我只想在調用劍道網格的create action方法時插入兩個相關的實體。我該怎麼做 ? –

+0

@AliRoshanbin:不要將**對象**鏈接到彼此,而應該只存儲他們的** ID **。序列化器試圖序列化整個對象,但它試圖序列化'myObj1','myObj1.RelatedObj2','myObj1.RelatedObj2.RelatedObj1','myObj1.RelatedObj2.RelatedObj1.RelatedObj2' ,等等...... – Flater

回答

0

你能不能改

return Json(models.ToDataSourceResult(request, ModelState)); 

與此

return Json(new[] { models }.ToDataSourceResult(request, ModelState)); 
+0

感謝您的回答,但我仍然收到相同的錯誤: 「序列化類型爲'Tpph.Models.BKP_STRADE'的對象時檢測到循環引用。」 –

+0

你可以添加你的視圖代碼嗎? –

+0

我的看法沒有任何錯誤。它只是一個簡單的Kendo Grid,帶有基本選項。 –