1

私は Entity Framework を使用してモデルを作成しています。私は Entity Framework を初めて使用するので、ご容赦ください。

私は自分のデータベースが常に生成されるすべてのものであることを望んでいるので、モデル自体に変更を加えるつもりはありません。データベースへのすべての変更を解除して、[データベースからモデルを更新] をクリックするだけです。これは順調に機能しています!ただし、2 つのテーブル間に 1 対 1 の関係があり、データベースに外部キー制約が設定されている場合、親テーブルに戻るナビゲーション プロパティを子テーブルに取得します。

したがって、子から親にアクセスしたい場合は、 child.parent.fieldName を実行できます

理論的には素晴らしいように思えますが、エンティティ フレームワークによって作成された JSON のオブジェクトをシリアル化する必要があるときに問題が発生します。親オブジェクトを子オブジェクトと一緒にシリアル化しようとするため、常にエラーが発生します。通常、この時点では無効な状態になっているため、A) シリアル化できず、B) とにかく余分な情報はすべて必要ありません。

何らかの方法でデータベースの構成を誤っていますか? モデルに Parent.Child Navigation プロパティのみが必要であることをデータベースに指定させる方法はありますか? Child.Parentではありませんか?

4

1 に答える 1

2

何らかの方法でデータベースの構成を誤っていますか? モデルに Parent.Child Navigation プロパティのみが必要であることをデータベースに指定させる方法はありますか? Child.Parentではありませんか?

いいえ。データベースは、その上で何らかのツールを使用する意図について何も知りません。ナビゲーション プロパティが必要ない場合は、EDMX で削除して変更する必要がありますが、プロパティが必要な場合でもシリアル化が必要な場合があります。このような場合、クラスの生成に使用する戦略を変更して (T4 テンプレートを使用していない場合は非常に困難です)、使用するシリアライゼーション API に依存するいくつかの特別な属性を使用して、一部のプロパティをシリアライズされていないとマークする必要があります。

正しいアプローチは、エンティティをシリアル化するのではなく、シリアル化するプロパティ/データのみを含むエンティティから満たされた特別なデータ転送オブジェクトを作成することであり、この問題に陥ることはありません。

于 2012-09-28T19:53:42.537 に答える