2010-07-12 4 views
0

SubSonic 3 버전의 활성 레코드 패턴을 사용하고 있습니다. 내 요구 사항은 테이블에서 3 임의의 행을 얻는 것입니다. 일부 인터넷 검색 후 나는 SQL에서 NewID 함수를 사용할 수 있지만 하위 음원을 사용하여 Randow 행을 가져올 수 없다는 것을 알게되었습니다.아음속 3을 사용하여 임의의 행 목록을 얻는 방법

답변

1

아음속과 함께 항상 "백도어"가 있습니다. 그것은 InlineQuery (2.2 음속) 또는 CodingHorror라고 (음속 3) :

SELECT top 3 
newid() as sortorder, id 
FROM some_table 
ORDER by sortorder 

그래서 나는이

List<int> result = new CodingHorror(@" 
     SELECT TOP 3 
     id, newid() as sortorder 
     FROM some_table 
     ORDER by sortorder 
    ).ExecuteTypedList<int>(); 

만약 같은 것을 제안

: http://subsonicproject.com/docs/CodingHorror

귀하의 SQL 쿼리는 아마 다음과 같을 것 아음속 2.2에서 3으로 변경되지 않았습니다. ExcecuteTypedList() 메서드는 제네릭 형식 매개 변수로 valuetype과 함께 사용될 때 쿼리의 첫 번째 요소를 반환합니다. 이 경우 : id.

이도 작동 할 수 있습니다 :

List<Product> result = new CodingHorror(@" 
     SELECT TOP 3 
     *, newid() as sortorder 
     FROM products 
     ORDER by sortorder 
    ).ExecuteTypedList<Product>();