2015-03-05 2 views
0

У меня есть веб-приложение MVC и служба веб-API, с которой я пытаюсь получить информацию. Проблема в коллекции сущностей CapitalMailOrders отсутствует при ее десериализации на веб-странице.Newtonsoft.Json.JsonConvert не десериализует EntityCollection должным образом

Служба использует ниже, чтобы получить информацию

var result = db.Contacts 
     .Include(a => a.IDXPageLinks) 
     .Include(b => b.ReboGatewayLoginInfoes) 
     .Include(c => c.SocialMedias) 
     .Include(d => d.WebSiteInfoes) 
     .Include(e => e.ContactImages) 
     .Include(f => f.RealtorSetUpProcesses.Select(f1 => f1.CapitalMailOrders) 
     .Include(g => g.Contact_CarrierCode_Assignments) 
     .FirstOrDefault(c => c.ContactID == id); 

Этот код хорошо и возвращает ниже на стороне службы. На приведенном ниже рисунке показано 3 CapitalMailOrders, что и должно быть.

enter image description here

Но когда это десериализации на веб стороне я только получаю 2 3-й является нулевым

enter image description here

здесь является веб-Side Repository Code

public Contact Get(int id) 
    { 
     var responseStream = 
      requestMethod.GetResponseStream(
       requestMethod.getRequest("GET", "application/json", 
        string.Format("{0}/api/contact/{1}", restService, id)).GetResponse()); 

     var contacts = deSerialize<Contact>(responseStream) as Contact; 
     return contacts; 
    } 

десериализации является в базовом хранилище

public class BaseRepository 
{ 
    protected readonly string restService = ConfigurationManager.AppSettings["restService"]; 

    protected readonly RequestMethod requestMethod = new RequestMethod(); 
    protected ISerialization _serializer; 

    protected BaseRepository() 
    { } 

    protected object deSerialize<T>(Stream stream) 
    { 
     var retval = _serializer.DeSerialize<T>(stream); 
     return retval; 
    } 

    protected string serialize<T>(T value) 
    { 
     var retval = _serializer.Serialize<T>(value); 
     return retval; 
    } 
} 


public class JsonNetSerialization : ISerialization 
{ 
    public string Serialize<T>(object o) 
    { 
     return JsonConvert.SerializeObject((T)o); 
    } 

    public object DeSerialize<T>(Stream stream) 
    { 
     return JsonConvert.DeserializeObject<T>(new StreamReader(stream).ReadToEnd()); 
    } 
} 

Любые идеи? Thanks

ответ

0

Этот post указал мне проблему и предлагает решение. В двух словах плакат @Darin рекомендовал вернуть сбор данных из веб-api с использованием моделей, а не коллекции сущностей. Поскольку привязка данных к контексту db отсутствует при сериализации данных обратно в веб-приложение, на самом деле нет причин нести накладные расходы и проблемы с попыткой сериализации коллекции сущностей. Это blog post более подробно.