Linq-to-SQL 식을 사용하여 SQL 절 생성

c# dapper linq-to-sql

문제

Expression을 사용하고 Linq-To-SQL을 사용하여 필요한 SQL 문을 생성 할 수있는 저장소 모델을 만들고 싶습니다.

예를 들어, 다음과 같은 함수가 있습니다.

// Possible criteria
Expression<Func<Purchase,bool>> criteria1 = p => p.Price > 1000;

// Function that should take that criteria and convert to SQL statement
static IEnumerable<Customer> GetCustomers (Expression<Func<Purchase,bool>> criteria)
{
   // ...
}

함수 내에서 Linq-To-SQL을 사용하여 SQL 문으로 조건을 변환하고 싶습니다.

DataContext.Log 를 사용하여 실행 된 쿼리를보고 DataContext.GetCommand(query).CommandText 를 사용하여 실행되기 전에 전체 쿼리를 볼 수 있다는 것을 알고 있습니다. 그러나 전체 표현의 일부만 생성하고 싶습니다.

달성하고자하는 일은 내 저장소를 추상화하는 것입니다 (Linq-to-SQL, Dapper 등). 그렇게하면 Expression을 리포지토리에 전달하고 올바른 구문을 생성하고 올바른 기술을 사용하여 실행하게 할 수 있습니다.

수락 된 답변

다음과 같이 할 수 있습니다.

string sql = DataContext.GetTable<Customer>().Where(criteria).ToString();

ToString ()은 SQL 표현식을 제공합니다. 그런 다음 정규식을 사용하여 WHERE 절을 제거 할 수 있습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.