2013-06-14 2 views
0

작은 WCF 서비스의 ORM으로 화려한 PetaPoco를 사용하고 있습니다. 내가 Management Studio에서 쿼리를 실행하면NEWID()로 주문하면 PetaPoco가 결과를 반환하지 않습니다.

public IEnumerable<Stock> GetRandomStock(int number) 
{ 
     Database db = new Database("MyCS"); 
     var sql = Sql.Builder.Append("SELECT TOP @0 * FROM Stock ORDER BY NEWID()", number); 
     var results = db.Query<Stock>(sql); 

     return results; 
} 

, 내 매개 변수에 따라 결과의 정확한 수를 얻을 : 나는 SQL에서 5 개 무작위 기록을 얻을 수있는 작은 방법이있다. 디버깅 할 때 내 매개 변수가 쿼리에 전달되는 것을 볼 수 있습니다.

결과가 좋지 않은 아이디어가 있습니까?

미리 감사드립니다.

답변

2

결과를 반복합니까? 그렇지 않으면 쿼리가 실행되지 않습니다.

Query 대신 Fetch을 사용해야합니다. 결과를 반복 할 때만 쿼리를 실행하기 때문에 Query이 실행됩니다.

public IEnumerable<Stock> GetRandomStock(int number) 
{ 
     Database db = new Database("MyCS"); 
     var sql = "SELECT TOP @0 * FROM Stock ORDER BY NEWID()"; 
     var results = db.Fetch<Stock>(sql, number); 

     return results; 
}