2011-02-02 7 views
0

를이 실제 데이터베이스 쿼리를 생성합니다 방지 Linq에 실제 데이터베이스 작업

을 LINQ to SQL은을 사용하여
public interface IProductsRepository 
{ 
    IQueryable<Product> Products { get; } 
} 

...?

var x = from p in repositoryInstance.Products where price > 100; 

그렇다면 호출자가 복잡하고 느린 SQL 문을 실행하는 것을 피하려면 어떻게합니까?

답변

3

LINQ to SQL (및 다른 LINQ 공급자)은 잘못된 SQL 문을 허용하지 않습니다. 가능한 경우 컴파일 타임 오류로 인해 코드가 컴파일되지 않습니다. 그렇게 할 수 없다면 런타임에 오류가 발생합니다.

+0

안녕하세요. 나는 복잡하고 느린 진술을 의미한다. – Eduardo

+0

@ 에두아르도 - 정말로 할 수는 없지만 실제로 복잡하고 느린 SQL 문을 쓰는 것을 막을 수있는 방법은 없습니다. –

+0

@Eduardo : Eric의 말처럼 LINQ는 SQL과 마찬가지로 복잡하고 느린 SQL 문을 허용합니다. LINQ의 한 가지 단점은 쿼리를 미리 알 수 없으므로 일부 DB 최적화가 불가능하다는 것입니다. 일반 최적화는 자동으로 수행됩니다. LINQ는 쿼리를 최적화 한 다음 SQL Server에서 쿼리를 최적화합니다. –