2012-07-10 2 views
0

간단한 데이터 문제Simpledata 무작위 순서화

두 개의 테이블이 있습니다 : 회사 및 제품. 특정 기준을 충족하는 모든 회사의 제품을 쿼리하고 가져 오는 경우 결과가 반환 될 때마다 임의로 정렬되도록하고 싶습니다. 어떻게해야합니까? (당신이 도움을 줄 수있는 경우) 기업 당 제품의 최대 수를 가지고 또한

나는 싶어요. 따라서

Database.Default.Products.All().Where(Database.Default.Products.Companies.Status=3) 

최대 3 개 또는 각각을 원합니다.

+0

원시 SQL에서도 행의 * random * 샘플을 얻는 것은 고통 스럽지만 최소한 효율적으로 수행해야합니다. 이것은 틈새 시나리오입니다. 나는 "임의의 행을 얻는다"가 대부분의 도구에 내장되어 있다면 개인적으로 상당히 놀랐습니다. SimplData를 사용하면 원시 SQL을 실행할 수 있습니까? 너는 그걸 버려야 할거야 ... –

답변

3

Simple.Data가 지원하는 다른 SQL 및 NoSQL 데이터베이스에서 구현되는 방식이 너무 다양하기 때문에 기본 제공 지원이 없습니다.

가장 좋은 방법은 데이터베이스 개체의 메서드 인 것처럼 Simple.Data에서 호출 할 수있는 저장 프로 시저로 검색을 구현하는 것입니다.

SQL Server를 사용하는 가정, 그건 당신이 다음과 같이 Simple.Data에서 호출 할 수있는

CREATE PROCEDURE RandomProductSearch(@Status int, @Take int) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    SELECT TOP (@Take) Products.* 
    FROM Products 
    JOIN Companies ON Products.CompanyId = Companies.CompanyId 
    WHERE Companies.Status = @Status 
    ORDER BY NEWID() 
END 

다음과 같습니다 도움이

var products = Database.Default.RandomProductSearch(3,10); 

희망.