Rilevato il loop di auto riferimento di Entity Framework

Ho uno strano errore. Sto sperimentando un’API Web .NET 4.5, Entity Framework e MS SQL Server. Ho già creato il database e impostato le chiavi e le relazioni primarie e straniere corrette.

Ho creato un modello .edmx e ho importato due tabelle: Dipendente e Reparto. Un dipartimento può avere molti dipendenti e questa relazione esiste. Ho creato un nuovo controller chiamato EmployeeController utilizzando le opzioni di scaffolding per creare un controller API con azioni di lettura / scrittura utilizzando Entity Framework. Nella procedura guidata, il Dipendente selezionato come modello e l’ quadro corretta per il contesto dei dati.

Il metodo che viene creato assomiglia a questo:

public IEnumerable GetEmployees() { var employees = db.Employees.Include(e => e.Department); return employees.AsEnumerable(); } 

Quando chiamo la mia API via / api / Employee, ottengo questo errore:

Il tipo ‘ObjectContent`1’ non è riuscito a serializzare il corpo della risposta per il tipo di contenuto ‘application / json; … System.InvalidOperationException “,” StackTrace “: null,” InnerException “: {” Messaggio “:” Si è verificato un errore. “,” ExceptionMessage “:” Ciclo di autoriferimento rilevato con tipo ‘System.Data.Entity.DynamicProxies .Employee_5D80AD978BC68A1D8BD675852F94E8B550F4CB150ADB8649E8998B7F95422552’ . Path ‘[0] .Department.Employees’. “,” ExceptionType “:” Newtonsoft.Json.JsonSerializationException “,” StackTrace “:” …

Perché è autoreferenziale [0]. Dipartimento. Impiegati? Questo non ha molto senso. Mi aspetterei che ciò accada se avessi riferimenti circolari nel mio database, ma questo è un esempio molto semplice. Cosa potrebbe andare storto?