Subsonic - 使用可选参数进行查询

时间:2011-03-31 10:49:14

标签: optional-parameters subsonic2.2 optional

使用C#3.5到VS 2008和亚音速2.2。 任何人都知道是否可以创建一个基本上在其中间有“IF”的亚音速查询,具体取决于传递的参数是否大于零。

例如,删除方法有两个传递的参数 - A和B.

我想要(伪代码)

之类的东西
DELETE from Products
Where productId = A
if(B > 0)
{
AND ProductAttributeId = B
}

显然它不需要那里的实际'IF'条款,但这是我试图用亚音速做的本质。我知道我可以有两个不同的查询,具体取决于参数是否存在,但我想知道是否有更简洁的方法。

感谢。

1 个答案:

答案 0 :(得分:0)

这就是我通常的做法 - 它不是两个查询,而是一个SqlQuery,可选择添加约束:

SqlSquery q = DAL.DB.Delete()
    .From<DAL.Product()
    .Where(DAL.Product.ProductIdColumn).IsEqualTo(A);
if (B > 0)
{
    q.And(DAL.Product.ProductAttributeIdColumn).IsEqualTo(B);
}
q.Execute();

可能有拼写错误,我现在无法测试。