Un'app web di Asp.net MVC 5 con Entity Framework 6, è pubblicata e ospitata su IIS 10.
Dopo la pubblicazione, sono in grado di accedere e registrarmi utilizzando i servizi MVC incorporati. Tuttavia, l'accesso ai dati tramite EF nella tabella db restituisce risultati vuoti e l'aggiunta di un'eccezione non genera eccezioni.
IQueryable<Record> records=null;
try
{
records= from m in _context.Record
select m;
}
catch (NullReferenceException e)
{
return Json(JsonConvert.SerializeObject(e.Message, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
catch (ArgumentNullException e)
{
return Json(JsonConvert.SerializeObject(e.Message, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
catch (Exception e)
{
return Json(JsonConvert.SerializeObject(e, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
return Json(JsonConvert.SerializeObject(records, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
Sarei lieto di sapere che qualsiasi impostazione di sicurezza può essere risolta.
Inizia più semplice e usa il debugger.
var query = _context.Records.AsQueryable();
var records = query.ToList();
return Json(records, JSonRequestBehavior.AllowGet);
se preferisci la sintassi di linq:
var query = from r in _context.Records
select r;
... metti un punto di rottura su var records = query.ToList();
e verifica che stai ottenendo risultati. Se stai ottenendo risultati, il problema potrebbe essere quello di fornire IQueryable
a Json. Se non stai ancora ottenendo risultati, ricontrolla la stringa di connessione.
La mia raccomandazione è quella di evitare il passaggio di entità per visualizzare la logica, è solo irto di problemi che si accumulano con il carico pigro e si occupano di entità disconnesse e di ricongiungimento di entità con DbContexts durante il round trip. Uso le entità per la mappatura dei domini e visualizzo i modelli per le rappresentazioni dei dati per la vista. Il vantaggio è quello di evitare i problemi di carico pigro di cui sopra, ecc., Ma anche da una prospettiva di dati sul filo, in genere non è necessario inviare ogni valore e riferimento figlio per ciascuna entità. I modelli di vista riflettono i dati necessari alla vista e possono essere appiattiti, se necessario, dal dominio.
var viewModels = _context.Records
.Select(x => new RecordViewModel
{
RecordId = x.RecordId,
//...
}).ToList();
return Json(viewModels, JSonRequestBehavior.AllowGet);
Ad esempio, è possibile utilizzare Automapper per aiutare a gestire la mappatura tra entità e modello di vista.