2010-04-28 7 views

답변

1

일반적으로 내가하는 일은 LINQ to Views와 LINQ to Stored Procedures입니다. LINQ는 쿼리 처리가 SQL 측에서 실행되는 쿼리 된 데이터를 관리하는 방법을 해결하기 때문에 무엇이 선호되는지에 대한 질문이 아닙니다. 쿼리 처리 (또는 저축, 대부분 저축)가 가능하므로 코드가 필요하지 않습니다. 그 일은 더 느립니다.

필자는 필요한 경우 두 가지를 모두 사용하고자한다고 말합니다. 여러 테이블을 하나의 엔티티로 저장해야하는 엔티티에 저장 하시겠습니까? 그렇다면 LINQ와 함께 저장 프로 시저를 사용하십시오. 테이블과 엔티티 관계를 1 대 1로 사용한다면 LINQ를 사용하면됩니다.

0

같은 데이터를 반복해서 요청하거나 (데이터 집합을 캐싱하거나 페이지 캐싱을 사용하거나 LINQ를 사용하는 경우 개체를 캐시하는 등) CMS를 통해 결과를 캐시합니다.

LINQ 또는 SP를 사용하더라도 문제가되지 않지만 LINQ 만 사용하면됩니다.

1

Linq2Sql (및 Entity Framework)과 함께 저장 프로 시저를 사용할 수 있으므로 둘 중 하나를 선택할 수 없습니다.

0

간단한 CRUD 테이블 (조인 안 함 !!!) 작업 LINQ to SQL은 아무 문제가 없지만 더 복잡한 (조인이 필요함) 항상 저장 프로 시저를 사용합니다 (원하는 경우 저장 프로 시저에 Linq를 사용할 수 있음)

이 사이트와 다른 사이트에 대한 수많은 논쟁이 있습니다. 필자는 보통 프로 Linq 캠프를 최근에 프로그래밍에 들어갔고 저장 프로 시저를 사용하지 않아도되는 사람들, 즉 이전 프로젝트의 데이터베이스 측면에 크게 관여하지 않은 사람들로 나눌 수 있습니다.

순수 LINQ, 저장 프로 시저 및 두 가지를 혼합하여 여러 프로젝트에서 작업 한 경험으로 저는 Linq에게 기본적인 CRUD 및 저장 프로 시저를 더 복잡하게하거나 성능에 의존하는 두 가지 이유가 있습니다.

1 - 배포/보안 - 데이터베이스 로직을 저장 프로 시저로 분리하고 소스 코드에 통합하지 않고 DLL을 릴리스하는 것이 큰 장점입니다. 모든 엔터프라이즈 수준의 기업에 필수적인 역할 및 SQL Server 보안을 사용하여 각 쿼리 주위에 적절한 보안/액세스 계층을 추가 할 수 있으며 새로운 주 릴리스를 수행하지 않고도 모든 저장 프로 시저의 SQL을 변경할 수 있습니다 응용 프로그램 (dll). 저장 프로 시저를 사용하여 생방송 문제와 성능 병목 현상을 해결해야하고 새 응용 프로그램 릴리스로이를 수행해야하는 악몽이었을 것입니다.

2 - 성능/코드 냄새 - 나는 많은 수의 응용 프로그램이 심하게 작성되고 비효율적 인 Linq로 흩어져있는 것을 보았습니다. 개발자는 Linq, 게으른 Linq와 SQL 쿼리를 거의 사용하지 않아 귀찮아합니다. 엔터프라이즈 수준 시스템에서 성능 문제를 디버깅하려고하는 악몽을 불러 일으 킵니다. '가능한 한 빨리 수행하십시오'라는 말이 널리 보급되어 있습니다. 필자는 Linq가 출현 한 이후 Spaghetti 코드를 더 많이 보았는데, 이전 버전의 라이브러리/패턴에서 보았던 것보다 COM에서 나온 코드입니다.