Mostrando entradas con la etiqueta visual web developer. Mostrar todas las entradas
Mostrando entradas con la etiqueta visual web developer. Mostrar todas las entradas

domingo, 30 de octubre de 2016

Error de JSON, AngularJS y Entity Framework en Visual Studio

Aprendiendo a trabajar con AngularJS en Visual Studio, realice un proyecto con generación de las entidades desde la base de datos y en el momento de retornar una consulta de información JSON hacia AngularJS con un objeto JsonResult empleando el método a continuación:

public JsonResult GetData(string searchText)
{
DatosSesion Buscar = new DatosSesion();
Buscar.TextoBuscar = searchText;

List<Persona> Personas = Servicio.PersonaConsultar(Buscar);
return new JsonResult { Data = Personas, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

obtuve el siguiente error:

Se detectó una referencia circular al serializar un objeto de tipo 'System.Data.Entity.DynamicProxies.Persona_EA0C99EE64647524A7D8EA6436602CFBD1E64A795238EDD506D7FF559CCDE7FD'.”

"A circular reference was detected while serializing an object of type 'System.Data.Entity..."

Investigando en Internet encontré para el error"JSON Circular Reference Serialization Error", como primera solución el modificar el contexto del Entity Framework de la siguiente manera:

Contexto.Configuration.ProxyCreationEnabled = false;

Sin embargo, la solución no era la que buscaba, pues genera problema adicional en el cargue de las entidades relacionadas.

Posteriormente intenté con AutoMapper, sin embargo, esto hace que generemos código adicional para transferir los datos entre objetos, así que seguí investigando y encontré la solución a mi problema retornando un objeto dynamic con   Newtonsoft.Json de la siguiente manera:

public dynamic GetData(string searchText)
{
DatosSesion Buscar = new DatosSesion();
Buscar.TextoBuscar = searchText;
List<Persona> Personas = Servicio.PersonaConsultar(Buscar);
return Newtonsoft.Json.JsonConvert.SerializeObject(Personas, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
}

El ejemplo completo del código fuente en funcionamiento lo puedes encontrar en el siguiente artículo: Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Para la documentación y descarga de angularjs puedes acceder a: https://angularjs.org/

Para finalizar les recuerdo:

Cada quien tiene su manera de matar pulgas, así que puede haber una gran cantidad de maneras de hacer el mismo trabajo.

Estos artículos son ejemplos, así que, si tienes una mejor manera de hacerlo o puedes colaborarme con alguna observación, tu comentario es bienvenido.
  • ·         No asumo ninguna responsabilidad por el uso de lo expuesto.
  • ·         Si los artículos son de utilidad, no olvides un “Me Gusta”, Compartirlo o dejar algún comentario.
  • ·         Para mantener el blog se usa publicidad de google AdSense
  • ·         El Blog utiliza cookies para registrar hábitos de navegación.

Entrada destacada

Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Este artículo es el primero de una serie de artículos en que quiero explicar mi visión de la programación por capas. La Arquitectura ...