0

私は非常に単純なデータベーススキーマを次のように構築しました

**Tickets**:
TicketId (PK)
AreaId (FK)
SeverityId (FK)
AssigneeId (FK)

**Areas**:
AreaId(PK)
AreaName

**Severities**:
SeverityId(PK)
SeverityName

**Assignees**:
AssigneeId(PK)
AssigneeName

エンティティ モデルを作成し、TicketController でチケット テーブル内のデータを取得して Json しようとしています。

[HttpPost]
public ActionResult Index([DataSourceRequest]DataSourceRequest result)
{
var tickets = db.Tickets.Include(t=> t.Areas).Include(t=> t.Assignees).Include(t=> t.Severities)

DataSourceResult result = tickets.ToDataSourceResult(request);

Return Json(result);
}

ビューでKendoUiGridに結果を渡すために結果をJsonするときに理解できない理由で、「循環参照エラー」が発生します。テーブル/エンティティの関係に循環参照がありません!!

剣道のドキュメントで私はこれを読みました

Kendo UI JavaScript ライブラリを直接使用することにした場合、JSON を返すのは簡単です。コントローラー メソッドを定義し、返された結果で this.Json を呼び出すだけです。.NET が応答をシリアル化できる場合は、これですべてです。

上記のすべては、実際には、主キー/外部キーを持つ正常なデータベース スキーマからの Json エンティティを取得できないことを意味しますか?

事前にサンクス

4

2 に答える 2

1

フラットな Model クラスを作成し、モデルを Json と Grid に渡します。ここでやろうとしていることよりも少し手動でモデルを設定する必要がありますが、後で発見するモデルを持つことには他の利点があります。循環参照は、EF クラスのナビゲーション プロパティが原因です。MVC では、モデルはデータ モデル クラスを意味するのではなく、作成する新しいクラスを意味します。正しく行われれば、新しいモデルがほとんどの作業、検証、変換などを行うはずです。コントローラーは物事を渡すだけで、ビューはレンダリングするだけです。お役に立てれば!

于 2013-01-06T22:19:25.423 に答える
1

遅延読み込みを無効にしてみてください。DB 内のすべてを JSON にシリアル化しようとしている可能性があります。

于 2013-01-04T08:25:25.193 に答える