Pergunta

Eu tenho um conjunto de LINQ para classes de SQL e serializada-los em JSON usando o .NET JavaScriptSerializer.

No entanto, assim que eu adicionar registro em uma tabela relativa, serialização lança uma "exceção de referência Circular". Aaarggh!

É descrito em detalhes aqui .

Eu tenho algumas opções

  • Converter o LINQ to SQL classe para uma classe com nenhum relacionamento evitando assim a referência circular
  • snip a referência circular pelo anulamento associações - não considero que isso seja uma opção real
  • Use ScriptIgnoreAttribute (de alguma forma). Eu não poderia facilmente aplicar isso porque as propriedades estão em classes geradas e LINQ to SQL não significa automaticamente classes de honra de amigos
  • Use JSON.NET e de alguma forma o uso atributos + aulas de amigos para parar o serializer tentando atravessar relacionamentos.

Tem mais alguém encontrou isso? Eu realmente prefiro a última opção, se possível, mas eu não sei como fazer isso.

Qualquer ajuda é muito apreciada

Foi útil?

Solução

A última versão do Json.NET suporta serialização relações circulares. Confira Preservar Referência de Objetos na ajuda.

Outras dicas

link adicional para resposta aceita

Json.NET Ajuda, Preservar Referência de Objetos (com exemplo)

Parece que funciona bem com o LINQ to SQL

A solução de James resolvido parte do meu problema. Eu precisava excluir determinados tipos de lista dentro do objeto. Para resolver o meu problema, eu apenas copiou as partes do objeto que eu precisava. O seguinte é um exemplo.

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
                }) );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top