J'ai une erreur étrange. Je suis en train d'expérimenter avec un Web API .NET 4.5, Entity Framework et MS SQL Server. J'ai déjà créé la base de données et configuré les clés primaires et étrangères correctes ainsi que les relations.
J'ai créé un modèle .edmx et importé deux tables : Employee et Department. Un département peut avoir plusieurs employés et cette relation existe. J'ai créé un nouveau contrôleur appelé EmployeeController en utilisant les options de génération de code pour créer un contrôleur API avec des actions de lecture/écriture en utilisant Entity Framework. Dans l'assistant, j'ai sélectionné Employee comme modèle et l'entité correcte pour le contexte de données.
La méthode qui est créée ressemble à ceci :
public IEnumerable GetEmployees()
{
var employees = db.Employees.Include(e => e.Department);
return employees.AsEnumerable();
}
Quand j'appelle mon API via /api/Employee, j'obtiens cette erreur :
Le type 'ObjectContent`1' n'a pas réussi à sérialiser le corps de réponse pour le type de contenu 'application/json; ...System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"Une erreur s'est produite.","ExceptionMessage":"Détection de boucle auto-référente avec le type 'System.Data.Entity.DynamicProxies.Employee_5D80AD978BC68A1D8BD675852F94E8B550F4CB150ADB8649E8998B7F95422552'. Chemin '[0].Department.Employees'.","ExceptionType":"Newtonsoft.Json.JsonSerializationException","StackTrace":" ...
Pourquoi y a-t-il une auto-référence [0].Department.Employees? Cela n'a pas beaucoup de sens. Je m'attendrais à ce que cela se produise si j'avais des références circulaires dans ma base de données mais c'est un exemple très simple. Qu'est-ce qui pourrait mal se passer?