excepção referência circular quando a serialização LINQ para classes de SQL
-
13-09-2019 - |
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
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 ??p>
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
}) );