0

私たちの MVC3 ルーティング エンジンには、評価するデータベース ルックアップを含む制約を持ついくつかのエントリがあります。例えば:

        routes.MapRoute(
            "Product",
            "{manufacturer}/{partNumber}",
            new { controller = "Product", action = "Details", manufacturer = "" },
            new { manufacturer = new ManufacturerConstraint() }
        );
        routes.MapRoute(
            "Store",
            "{store}/{action}",
            new { controller = "Store", action = "Index" },
            new { store = new StoreConstraint() }
        );

whereManufacturererConstraint()にはデータベース ルックアップが含まれますが、含まれStoreConstraint()ません。

RouteUrl次のようなリンクを生成するために使用しています。

RouteUrl("Product", new { manufacturer = product.Brand, partNumber = product.PartNumber });

これからの3つの質問:

  1. 私たちの使用はデータベース検索を引き起こしますか?
  2. 「ストア」ルートのルートを生成した場合、すべてのルートに対してテストするため、ルックアップも生成されますか? それとも、指定されたルートに対して 1 つのテストのみを実行しますか?
  3. この使用法でデータベースにヒットした場合、そうでない使用方法はありRouteUrlますか?
4

1 に答える 1

1

私たちの使用はデータベース検索を引き起こしますか?

はい、制約が UrlGeneration で機能するように設定されている場合。Url.RouteUrlは、 と同様に、すべての制約を実行しますUrl.Action。唯一の違いは、一致するまで各ルートをテストするのではなく、使用するルートを明示的に指定していることです。

「ストア」ルートのルートを生成した場合、すべてのルートに対してテストするため、ルックアップも生成されますか? それとも、指定されたルートに対して 1 つのテストのみを実行しますか?

以上で回答したと思います。

この使用法でデータベースにヒットした場合、そうでない RouteUrl を使用する方法はありますか?

UrlGeneration で実行されないように制約を設定します (routeDirectionパラメーターを使用)。個人的には、代わりに検索データをキャッシュします。

于 2012-11-16T17:49:32.130 に答える