は今、私は結果をフィルタリングするエンティティフレームワークでこれをやっている:コントローラからストアドプロシージャを呼び出し、フィルタリングされた結果を取得して表示するにはどうすればよいですか?
public ActionResult Index(string productName, string productDesc, string productQty)
{
var products = from p in db.Products select p;
if (!String.IsNullOrEmpty(productName))
{
products = products.Where(p=>p.ProductName.Contains(productName));
}
// similarly for other parameters and returning to view as:
return View(products);
}
私はアプリケーションにそれをフェッチする前に、データベース自体の製品をフィルタリングするためのストアドプロシージャを書きたいです。
ストアドプロシージャは、次のとおり
CREATE PROCEDURE [dbo].[usp_FilterProducts]
@ProductName varchar = null,
@ProductDesc varchar = null,
@Quantity int = null
AS
BEGIN
SET NOCOUNT ON
SELECT *
FROM [Products]
WHERE (@ProductName IS NULL OR [ProductName] LIKE @ProductName)
AND (@ProductDesc IS NULL OR [ProductDesc] LIKE @ProductDesc)
AND (@Quantity IS NULL OR [Quantity] = @Quantity)
END
IがProduct
として対応するモデルクラスを有しています。
この手順は正しいですか?そうでない場合、どうすればよいでしょうか?
そして、コントローラからどのように呼び出すのですか?
これは広すぎます。あなたの*具体的な質問は何ですか? –
特定の質問:Entity Frameworkでこのプロシージャを実行するにはどうしたら、コントローラに渡されたパラメータがnullでない場合にフィルタリングされた結果を取得し、(すべての行を取得して)この 'product'モデルに割り当てて、ビューに渡しますか? –