Circular Reference exception with JSON Serialisation with MVC3 and EF4 CTP5w

Posted by nakchak on Stack Overflow See other posts from Stack Overflow or by nakchak
Published on 2011-01-05T16:05:37Z Indexed on 2011/01/06 12:53 UTC
Read the original article Hit count: 253

Hi

I'm having problems with a circular reference when i try and serialise an object returned via EF4 CTP5. Im using the code first approach and simple poco's for my model.

I have added [ScriptIgnore] attributes to any properties that provide a back references to an object and annoyingly every seems to work fine if i manually instantiate the poco's, i.e. they serialise to JSON fine, and the scriptignore attribute is acknowledged. However when i try and serialise an object returned from the DAL i get the circular reference exception "A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.xxxx'"

I have tried several ways of retreiving the data but they all get stuck with this error:

    public JsonResult GetTimeSlot(int id) {
        TimeSlotDao tsDao = new TimeSlotDao();
        TimeSlot ts = tsDao.GetById(id);
        return Json(ts);
    }

The method below works slightly better as rather than the timeslot dynamic proxied object causing the circular refference its the appointment object.

    public JsonResult GetTimeSlot(int id) {
        TimeSlotDao tsDao = new TimeSlotDao();
            var ts = from t in tsDao.GetQueryable()
                 where t.Id == id
                 select new {t.Id, t.StartTime, t.Available, t.Appointment};
        return Json(ts);
    }

Any ideas or solutions to this problem?

Update I would prefer to use the out of the box serialiser if possible although Json.Net via nuget is ok as an alternative i would hope its possible to use it as I intended as well...

© Stack Overflow or respective owner

Related posts about c#

Related posts about ASP.NET