Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Asp.NET MVC – <T> Türündeki Nesne Seri Hale Getirilirken Döngüsel Başvuru Algılandı

Bir önceki Asp.NET MVC – JsonResult İle Veri Dönerken RecursionLimit Aşıldı(RecursionLimit Exceeded) Hatası başlıklı yazımda RecursionLimit hatası üzerine yoğunlaşmıştık.Bu yazımızın içeriği ise benzer bir durum olan ” Türündeki Nesne Seri Hale Getirilirken Döngüsel Başvuru Algılandı” hatası üzerinedir.

Önceki yazımıza göz atarsanız eğer, veritabanı olarak gene “Okul” veritabanını baz alacağız.(Önceki yazıda oluşturduğumuz veritabanı ve ilişkileri aynen bu yazıda da örneklendirme amaçlı kullanacağız!)

Türündeki Nesne Seri Hale Getirilirken Döngüsel Başvuru Algılandı hatası, bir Post sonucunda Json olarak geriye döndürülmek istenen modelin ilişkisel bir yapıda olmasından kaynaklanmaktadır.

Örnek olarak aşağıdaki kod bloğunu inceleyiniz.

        [HttpPost]
        public JsonResult Post(int id)
        {
            VeriTabaniDataContext Veri = new VeriTabaniDataContext();
            Siniflar Sinif = Veri.Siniflars.FirstOrDefault(s => s.ID == id);
            return Json(Sinif, JsonRequestBehavior.AllowGet);
        }

Yukarıdaki “Post” isimli Action metodumuzun tetiklendiğini varsayarsak eğer işlem neticesinde aşağıda ekran görüntüsündeki hatayla karşılaşmaktayız.

Bu hatanın sebebi, yukarıda belirtmiş olduğum yazımızdaki sorunla aynı temeli teşkil etmektedir.Çözüm olarakta aynı tekniği kullanacağız.

        [HttpPost]
        public JsonResult Post(int id)
        {
            VeriTabaniDataContext Veri = new VeriTabaniDataContext();
            Siniflar Sinif = Veri.Siniflars.FirstOrDefault(s => s.ID == id);
            var JsonModel = new
            {
                SinifAdi = Sinif.SinifAdi,
                ID = Sinif.ID,
                Ogrenciler = from o in Sinif.Ogrencilers
                             select new
                             {
                                 Adi = o.Adi,
                                 SoyAdi = o.SoyAdi,
                                 ID = o.ID
                             }
            };
            return Json(JsonModel, JsonRequestBehavior.AllowGet);
        }

Bir önceki makalemde belirttiğim gibi burada da aynı işlemleri gerçekleştiriyoruz.

Yani anlayacağınız,
RecursionLimit hatası ile, ” Türündeki Nesne Seri Hale Getirilirken Döngüsel Başvuru Algılandı” hatası aynı teknikle çözülebilmektedir.

Bu yazının içeriğini daha net anlayabilmeniz için yukarıda belirtmiş olduğum adresteki yazımı okumanız gerekmektedir.Ek olarak her an karşılaşabileceğiniz olası bir RecursionLimit hatası hakkında da bilgi edinmiş olacaksınız.

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar diliyorum…

Mobil sürümden çık