2009-09-23 11 views
7

Mam zestaw klas linq do sql i serializowane je w JSON przy użyciu .NET JavaScriptSerializer.Nienormalne odwołanie do odwołania przy serializacji LINQ do klas SQL

Jednak, gdy tylko dodaję rekord do powiązanej tabeli, serializacja generuje "wyjątek z odwołaniem do okólników". Aaarggh!

Zostało to szczegółowo opisane pod numerem here.

Mam kilka opcji

  • Konwersja LINQ to SQL klasy do klasy bez relacje unikając w ten sposób odwołanie cykliczne
  • ciach okrągłą odniesienie przez stowarzyszenia Nulling - Nie uważam, aby ten być prawdziwą opcją
  • Użyj ScriptIgnoreAttribute (w jakiś sposób). Nie mogłem tego łatwo zastosować, ponieważ właściwości są w wygenerowanych klasach i LINQ do SQL nie honoruje automatycznie klas znajomych
  • Użyj JSON.NET i w jakiś sposób korzystaj z atrybutów + klas znajomych, aby zatrzymać serializator próbujący przejść przez relacje.

Czy ktoś jeszcze to napotkał? Naprawdę wolałbym ostatnią opcję, jeśli to możliwe, ale nie wiem jak to zrobić.

Każda pomoc jest mile widziana

Odpowiedz

8

Najnowsza wersja Json.NET obsługuje szeregowania okrągłe relacje. Sprawdź pomoc Preserving Object References.

+2

Wrote blogu szczegółowo konfigurację: http://www.johnnycode.com/blog/2012/04/10/serializing-circular-references-with-json-net-and-entity-framework/ –

1

rozwiązanie Jamesa rozwiązano część mojego problemu. Musiałem wykluczyć niektóre typy list wewnątrz obiektu. Aby rozwiązać mój problem, właśnie skopiowałem części obiektu, których potrzebowałem. Oto przykład.

var DB = new DBDataContext(); 
      var lUsers = new List<User>(); 
      DB.Users.ToList().ForEach(x => lUsers.Add(new User() 
       { 
        ID = x.ID, 
        FIRST_NAME = x.FIRST_NAME 
       }));