2013-03-29 4 views
3

Приложение моего рабочего приложения wpf связывается с mvc 4 web api. Я пытаюсь прочитать все записи базы данных. Это простой интерфейс:Рассмотрите возможность использования ошибки сериализации DataContractResolver

public interface IEventRepository 
{ 
    IEnumerable<Event> GetAll(); 
} 

И это хранилище:

public class EventRepository : IEventRepository 
{ 
    private List<Event> events = new List<Event>(); 
    public EventRepository() 
    { 
     HeronEntities context = new HeronEntities(); 
     events = context.Events.ToList(); 
    } 

    public IEnumerable<Event> GetAll() 
    { 
     return events; 
    } 
} 

Это контроллер:

public class EventController : ApiController 
{ 
    static readonly IEventRepository repository = new EventRepository(); 

    public IEnumerable<Event> GetAllEvents() 
    { 
     return repository.GetAll(); 
    } 
} 

класс событий выглядит следующим образом:

public partial class Event 
{ 
    public Event() 
    { 
     this.Comments = new HashSet<Comment>(); 
     this.Rates = new HashSet<Rate>(); 
     this.RawDates = new HashSet<RawDate>(); 
    } 

    public int ID { get; set; } 
    public string Title { get; set; } 
    public string Summary { get; set; } 
    public string SiteURL { get; set; } 
    public string ContactEmail { get; set; } 
    public string LogoURL { get; set; } 
    public int EventType_ID { get; set; } 
    public Nullable<int> Location_ID { get; set; } 
    public Nullable<System.DateTime> BegginingDate { get; set; } 
    public string nTrain { get; set; } 
    public string Content { get; set; } 

    public virtual ICollection<Comment> Comments { get; set; } 
    public virtual Conference Conference { get; set; } 
    public virtual ICollection<Rate> Rates { get; set; } 
    public virtual ICollection<RawDate> RawDates { get; set; } 
    public virtual EventType EventType { get; set; } 
    public virtual Location Location { get; set; } 
} 

Когда я пытаюсь получить доступ к контроллеру, я получить вышеупомянутый failed to serialize the response body for content type ошибки. Существует некоторая проблема с серией сериализации классов Event. Я использовал тот же самый код с классами, содержащими примитивные типы, и работал отлично. Каков наилучший способ преодоления таких проблем сериализации?

ответ

4

У меня отключена ленивая загрузка и класс прокси-класса. Это решило проблему.

public EventRepository() 
    { 
     HeronEntities context = new HeronEntities(); 
     context.Configuration.LazyLoadingEnabled = false; 
     context.Configuration.ProxyCreationEnabled = false; 
     events = context.Events.ToList(); 
    }