1

사용자가 각 매개 변수에서 여러 값으로 여러 매개 변수를 선택할 수있는 기능을 작업 중입니다. C#을 사용하는 응용 프로그램에서이 기능을 디자인하는 방법을 알아 내려고합니다. 엔티티 프레임 워크는 저장 프로 시저에 매핑됩니다. 보안상의 이유로, 내 응용 프로그램은 저장 프로 시저 만 갖는 대리 데이터베이스를 통해 데이터베이스에 액세스해야합니다. 따라서 엔티티는 삽입, 업데이트 및 선택을위한 저장 프로 시저에 매핑됩니다. 궁극적으로 사용자가 선택한 필터를 데이터베이스 쿼리를위한 저장 프로 시저에 전달해야합니다. 내가 생각한 솔루션 중 하나는 비즈니스 계층에 대한 모든 데이터를 검색하고 linq를 사용하여 추가 필터링을 수행하는 것입니다. 그러나 이런 종류의 복잡한 쿼리를 수행하는 데 더 적합한 데이터베이스에서보다 메모리에서 필터링되는 데이터의 양 때문에 이상적인 것은 아닙니다. linq을 사용하여 동적 쿼리를 작성하는 데 필요한 게시물을 보았습니다. 그러나 이러한 종류의 게시물에서는 엔티티가 테이블에 매핑되어 더 쉽게 사용할 수 있습니다. 도움이 필요하시면 큰 도움이됩니다. 감사합니다, sirkalC# + Entity Framework + 저장 프로 시저로 동적 쿼리 생성

답변

0

EF (및 해당 문제에 대해서는 LINQ)는 지연된 실행을 사용합니다. IQueryable (Google 검색 시간)을 사용하여 동적 쿼리를 쉽게 생성 할 수 있으며 작성한 개체에 필터 조건을 만들 수 있습니다 (개체 없이도 재사용이 가능함).

SQL sproc의 경우 필터를 변경할 가능성이있는 모든 항목을 전달하고 SQL에서 데이터를 동적으로 작업하여 결과 집합을 생성하여 해결할 수도 있습니다.

어느 것을 선택해야합니까? 그것은 귀하의 그룹에서 핵심 역량이 어디에 있는지에 따라 다릅니다. 나는 친숙 함으로 인해 C# 코드를 선호한다 (sprocs를 해왔지만, 동적 sprocs는 왕실의 고통이 될 수있다).

이제주의해야 할 것은 SQL Server의 통계와 같이 서버에서 쉽게 조정할 수없는 동적 쿼리로 끝나는 것입니다. 다른 RDBMS에서도 유사한 개념이 사용됩니다. 예를 들어, LINQ to SQL을 사용하여 보았던 한 가지 문제는 SQL이 최적의 성능을 발휘하지 못하게하는 동적 쿼리이며 DBA로부터 많은 손주지가 필요합니다.