我有以下简化的查询(当前是从存储过程返回的),我希望将其用作Entity Framework中的工作视图的基础:
Select
cast (case when warehouse = @Warehouse then 1 else 0 end as bit) as AtThisWarehouse,
s.id as productStatusId
from products p
left join productstatus s on p.availiblity = s.cd;
显然,我不想在视图中使用参数,也不想使用存储过程或用户定义的函数,因为我想遵循Entity Framework中的当前模式。
仓库将是已知的,并且可以通过过滤器传递给where子句,但是我不确定如何利用这一事实来获取我想要的结果。有什么建议可以解决吗?
答案 0 :(得分:1)
因此,不要将case语句与参数一起使用,而应将其用作过滤器。因此,您的视图将类似于(最佳做法是始终在您的对象上包含架构,我认为是dbo):
视图
select warehouse
, productStatusId
, productId
from dbo.products p
left join dbo.productstatus s on p.availability = s.cd;
查询以使用视图
select productId
, productStatusId
from schema.viewname
where warehouse = @warehouse;
获取所有仓库状态的另一种方法
select cast(case when warehouse = @warehouse then 1 else 0 end as bit) as AtThisWarehouse,
productStatusId
from schema.viewname;