奇妙なエラーがあります。.NET 4.5 Web API、Entity Framework、および MS SQL Server を試しています。私はすでにデータベースを作成し、正しい主キーと外部キーと関係を設定しました。
.edmx モデルを作成し、Employee と Department の 2 つのテーブルをインポートしました。部門には多くの従業員がいる可能性があり、この関係が存在します。スキャフォールディング オプションを使用して EmployeeController という新しいコントローラーを作成し、Entity Framework を使用して読み取り/書き込みアクションを備えた API コントローラーを作成しました。ウィザードで、従業員をモデルとして選択し、データ コンテキストの正しいエンティティを選択しました。
作成されるメソッドは次のようになります。
public IEnumerable<Employee> GetEmployees()
{
var employees = db.Employees.Include(e => e.Department);
return employees.AsEnumerable();
}
/api/Employee 経由で API を呼び出すと、次のエラーが発生します。
「ObjectContent`1」タイプは、コンテンツ タイプ「application/json;」の応答本文をシリアル化できませんでした。...System.InvalidOperationException","StackTrace":null,"InnerException":{"メッセージ":"エラーが発生しました。","ExceptionMessage":"型 'System.Data.Entity.DynamicProxies で検出された自己参照ループ.Employee_5D80AD978BC68A1D8BD675852F94E8B550F4CB150ADB8649E8998B7F95422552'. パス '[0].Department.Employees'.","ExceptionType":"Newtonsoft.Json.JsonSerializationException","StackTrace":" ...
[0].Department.Employees を自己参照しているのはなぜですか? それはあまり意味がありません。データベースに循環参照がある場合、これが発生することが予想されますが、これは非常に単純な例です。何がうまくいかないのですか?