views:

683

answers:

2

I have a set of linq to sql classes and serialized them into JSON using the .NET JavaScriptSerializer.

However, as soon as I add record onto a relating table, serialization throws a "Circular reference exception". Aaarggh!

It's described in detail here.

I have a few options

  • Convert the linq to sql class to a class with no relationships thus avoiding the circular reference
  • snip the circular reference by nulling associations - i don't consider this to be a real option
  • Use ScriptIgnoreAttribute (somehow). I couldn't easily apply this because the properties are in generated classes and LINQ to SQL doesn't automatically honor buddy classes
  • Use JSON.NET and somehow use attributes + buddy classes to stop the serializer trying to walk across relationships.

Has anyone else encountered this? I would really prefer the last option if possible but I don't know how to do this.

Any help is greatly appreciated

+2  A: 

The latest version of Json.NET supports serializing circular relationships. Check out Preserving Object References in the help.

James Newton-King
+1  A: 

Additional link for accepted answer

Json.NET Help, Preserving Object References (with example)

It seems it works fine with LINQ to SQL

Emir