Дозвуковой - запрос с дополнительными параметрами

StackOverflow https://stackoverflow.com/questions/5498644

Вопрос

Использование C # 3,5 через VS 2008 и дозвуковой 2.2. Кто-нибудь знает, можно ли создать дозвуковой запрос, который по существу имеет «если» в середине этого, в зависимости от того, был ли пропущенный параметр, например, больше нуля.

Например, метод удаления, который имеет два прошедших параметра - A и B.

Я хочу что-то вроде (псевдо код)

DELETE from Products
Where productId = A
if(B > 0)
{
AND ProductAttributeId = B
}
.

Очевидно, что это не понадобится бы фактической «если» пункт там, но это суть того, что я пытаюсь сделать с дозвуковой.Я знаю, что я могу просто иметь два разных запроса в зависимости от того, есть ли параметр там или нет, но мне было интересно, есть ли устойчивый способ сделать это.

спасибо.

Это было полезно?

Решение

That's how I usually do it - it's not two queries, but one SqlQuery with optionally added constraints:

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();

There may be a typo, I can't test this right now.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top