1

Entity Framework オブジェクトで動作する ApiController があります。GET 要求で返そうとしている特定のオブジェクトには、ほぼ 12 個のナビゲーション プロパティがあります。

EF オブジェクトのリストを返すと、すべてのナビゲーション プロパティがシリアル化されるため、オブジェクトのシリアル化に膨大な時間がかかります。

    public IEnumerable<EFObject> Get()
    {
        IEnumerable<EFObject> EFObjects=
            db.EFObject;

        return EFObject;

    }

MVC がこれらのナビゲーション プロパティをシリアル化しないようにするにはどうすればよいですか?

私はこれを試しましたが、うまくいきませんでした。

4

2 に答える 2

2

MVC がこれらのナビゲーション プロパティをシリアル化しないようにするにはどうすればよいですか?

もちろんビューモデルを使用し、コントローラーアクションがドメインモデルの代わりにこのビューモデルを返すようにします。ビュー モデルは、必要なプロパティのみを含むように明確に定義されます。ドメイン モデルとビュー モデルの間のマッピングにもAutoMapper役立つ場合があります。

ベスト プラクティスは、常にメソッドからビュー モデルを公開し、ドメイン エンティティをそれらのメソッドの外部に表示しないようにすることです。このアプローチから得られる追加の利点は、API がドメイン モデルの変更に対して回復力があり、これは既存のクライアントを壊すことなく実行できることです。

于 2013-02-21T21:15:27.177 に答える
1

[XmlIgnore]属性を試すことができます。

多くはテクノロジースタックの残りの部分などに依存します。私はWebApiを使用しており、このコードをWebApiConfig.csファイルに入れており、ナビゲーションプロパティは無視されます。私は常にjsonではなくxmlを返します。

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;
于 2013-02-21T23:14:11.627 に答える