2010-06-30 2 views
0

먼저 LINQ 및 저장 프로 시저에 대한 또 다른 논쟁을 유발하려고하지 않습니다.LINQ 및 Stored Procs에 대한 데이터 액세스에 대한 질문 (어떤 것이 더 나은지 묻지 않음)

SQL 서버 저장 프로 시저를 사용하고 LINQ를 통해 해당 저장 프로 시저에 액세스하는이 질문에 대해 (맞는지 또는 잘못되었는지) 가정하십시오. 저장된 프로 시저 수준에서 기본 테이블 및 뷰에 대한 보안을 적용하기 때문에 저장 프로 시저를 다시 사용합니다. 나는 그것을 배우기 때문에 LINQ (다시 한번, 옳거나 그름을 위해)를 사용하고 있습니다.

  1. 내 LINQ 쿼리는 상대적으로 간단한 SELECT (분명히 바로이 질문에 읽은 데이터를 참조) 문이 아닌 그룹 또는 계산 또는 일반적으로 다른 더 복잡한 일을 포함 LINQ 쿼리해야 위를 감안할 때. 이 가정은이 논리를 T-SQL에 넣으려는 나의 계획에 근거합니다. 즉, 내 LINQ 쿼리는 상대적으로 "멍청한"쿼리가됩니다. 또한 스토어드 프로 시저 수준에서 보안을 강화하고 기본 테이블에 대한 액세스를 허용하지 않으려 고하는 바람에이 접근 방식은 그 목표와 일치하는 것으로 간주됩니다.

    # 1에서 내 논리에 결함이 있습니까?

  2. 기본 테이블에 대해 LINQ를 직접 사용하는 경우 분명히 해당 기본 테이블에 보안을 적용해야합니다. 이것은 명백한 것 같지만 확인하고 싶었습니다.

    # 2에서 논리가 흐릿합니까? LINQ - 투 - SQL, LINQ - 투 - XML, LINQ - 투 - 객체가있는 한 그 자체

답변

0

LINQ 난 당신이 가능성이려고 생각 LINQ - 투 - EF 등 매우 포괄적이다 (예를 들어, Linq-to-EF와는 반대로) Linq-to-SQL 기능 후에. Linq와 Linq의 강력한 기능을 활용할 수있는 방법을 가르쳐 줄 것이라고 Linq가 응용 프로그램에서 저장 프로 시저를 통해 이러한 집합을 조사함으로써 모든 세트가 제공됩니다. Linq-to-SQL이 서버에 보내는 SQL 쿼리를 생성하는 방법을 이해하는 데 필요한 많은 노하우를 놓치게 될 것입니다. 왜냐하면 여러분이 말하는 것처럼 아주 기본적인 '멍청한'쿼리 만 수행 할 수 있기 때문입니다. 예 : Linq-to-SQL에서 조인을 할 수조차 없을 것입니다. 그리고 Linq-to-SQL의 ORM 기능, DataContexts로 들어가는 캐싱 및 집합에서 항목을 삽입/업데이트/삭제할 수있는 ActiveRecord 동작을 제대로 이해할 수있는 기회를 놓치게됩니다.

나는 당신이하고있는 일 (스토어드 프로 시저와 linq를 함께 사용하는 것은 매우 유효한 접근법)에 반대하지 않지만 Linq를 배우기에는 좋지 않은 접근이라고 말합니다. 2008 년 Linq 전도사가 주창 한 .dbml 파일 접근 방식을 사용하는 Visual Studio의 데이터 모델링과 같은 일종의 접근 방식을 사용하여 발을 들여 놓으십시오.이 접근 방식은 크고 실행 가능한 프로젝트를 배포 할 때 결함이있는 것으로 생각합니다. Linq와 Linq-to-Sql에 대해 아주 잘 가르쳤다. 어떻게 작동하는지 이해하면 액세스 제어 (SQL Server 전도사가 항상 칭찬하는 접근 방식)와 .dbml에 의해 해결되지 않은 문제를 처리하는 방법을 분리하기 위해 저장 프로 시저를 적절하게 활용하는 방법을 이해할 수 있습니다 모델링 접근법 (특히, 데이터베이스 스키마 업그레이드의 문제점).

일부 사용자는 Entity Framework에서 제공하는 기능에주의를 기울여야하지만 사용자가 학습 단계에있는 경우 Linq-to-SQL을 권장합니다. 덜 복잡하고 작동하며 정상이며 VS 도구 세트에서 잘 지원되며 Entity-SQL을 배울 필요가 없습니다.

관련 문제