문제

VS # 3.5에서 VS 2008 및 Subsonic 2.2를 사용합니다. 통과 된 매개 변수가 0보다 큰지 여부에 따라 필수적으로 'if'가 'if'가있는 'if'가 본질적으로 'if'를 갖는 아일드 슨 쿼리를 만들 수 있는지 알고 있는지 알고 있습니다.

예를 들어 두 개의 전달 된 매개 변수가있는 Delete 메서드 - A와 B.

나는 (의사 코드) 와 같은 것을 원한다.

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

분명히 실제 'if'를 거기에서 필요하지 않을 것이지만, 그게 내가 아르손 사람과 함께하고 싶은 것의 본질입니다.매개 변수가 거기에 있는지 여부에 따라 두 개의 다른 쿼리를 가질 수 있습니다.하지만 깨끗한 방법이 있는지 궁금해하고있었습니다.

감사합니다.

도움이 되었습니까?

해결책

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