【发布时间】:2016-10-21 08:49:29
【问题描述】:
现在我在 Entity Framework 中这样做以过滤结果:
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
我有一个对应的模型类为Product。
这个程序正确吗?如果没有,应该怎么做?
而且,我如何从控制器调用它?
【问题讨论】:
-
这太宽泛了。您的具体问题是什么?
-
具体问题:如何在实体框架中执行此过程,如果传递给控制器的参数不为空,则检索过滤结果(否则检索所有行),然后分配给此
product模型并通过它的视图?
标签: sql-server asp.net-mvc entity-framework stored-procedures