복붙노트

[SQL] 저장 프로 시저 SQL VS ADO.NET에 엔티티 프레임 워크 VS LINQ? [닫은]

SQL

저장 프로 시저 SQL VS ADO.NET에 엔티티 프레임 워크 VS LINQ? [닫은]

어떻게 당신의 측면에서 그들 각각을 평가한다면 :

내 SQL처럼 그렇게 항상 ADO.NET의 다이 하드 팬이 절차를 저장하지만 최근 SQL Linq에와 연극을했고 내 DATAACCESS 층을 작성하고 지출하기로 결정했다 얼마나 빨리 날아하고있다 정말 이해 하나 Linq는 SQL 또는 EF ... 또는 둘 다에 약간의 시간?

내 연구 시간이 쓸모없는 렌더링 것이이 기술의에 큰 결함이없는 것을 난 그냥 확인하고 싶다. 예를 들면 성능은 간단한 애플 리케이션을위한 멋진하지만 지금까지 당신을 데려 갈 수있는 끔찍한이다.

최신 정보: 당신이 EF VS L2S VS의 SP가 아니라 ORM VS의 SP에 집중할 수 있습니다. 나는 주로 EF VS L2S에 의해 관심이 있어요. 그러나 일반 SQL 내가 대해 많이 알고있는 너무 때문에 저장 발동 비교를 가지고 싶어입니다.

해결법

  1. ==============================

    1.새 프로젝트를 시작한다면 우선, 엔티티 프레임 워크 ( "EF")로 이동 - 지금 "및 SQL에 대한 유지 관리가 쉽고 Linq에보다 더 강력하다 (더 나은 SQL (않습니다 더 SQL에 Linq에 같은)를 생성 L2S "). .NET 4.0의 출시로, 나는 구식 기술로 SQL Linq에 고려. MS는 더 L2S 개발을 계속하지에 대해 매우 개방적이었다.

    새 프로젝트를 시작한다면 우선, 엔티티 프레임 워크 ( "EF")로 이동 - 지금 "및 SQL에 대한 유지 관리가 쉽고 Linq에보다 더 강력하다 (더 나은 SQL (않습니다 더 SQL에 Linq에 같은)를 생성 L2S "). .NET 4.0의 출시로, 나는 구식 기술로 SQL Linq에 고려. MS는 더 L2S 개발을 계속하지에 대해 매우 개방적이었다.

    1) 성능

    이것은 대답하기 까다 롭습니다. 대부분의 단일 엔티티 작업 (CRUD)를 들어 당신은 단지 세 가지 기술과 동일한 성능에 대해 찾을 수 있습니다. 당신은 순서에서 SQL 작업에 EF와 Linq에 자신의 최대한을 사용하는 방법을 알 필요가 없습니다. 폴링 쿼리와 같은 대량 작업의 경우, 프레임 워크가 지속적으로 SQL을 다시 생성하지 않도록 엔터티 쿼리를 EF / L2S "컴파일"가 할 수 있습니다, 또는 당신은 확장 성 문제로 실행할 수 있습니다. (편집 참조)

    업데이트를 수행 할 ORM에 와이어를 통해 데이터를 마샬링 할 필요가 없기 때문에 당신이 방대한 양의 데이터를 업데이트하고 대량 업데이트를 들면, 원시 SQL 또는 저장 프로 시저는 항상 더 나은 ORM 솔루션에 비해 수행합니다.

    개발 2) 속도

    이 개발의 속도에 관해서는 대부분의 경우, EF 알몸 SQL / 저장 발동을 날려 버릴 것입니다. 이 (요청시) 변경으로 당신의 오브젝트 코드와 데이터베이스 코드 사이의 동기화 문제로 실행되지 않습니다 그래서 EF 디자이너, 데이터베이스에서 모델을 업데이트 할 수 있습니다. 내가 ORM 사용을 고려하지 않을 수있는 유일한 시간은 단지 데이터베이스에 원시 데이터 유지 보수 작업을 수행하는 응용 프로그램을 만들 때 당신은 당신이 어떤 업데이트를 수행하지 않는 경우보고 / 대시 보드 형 응용 프로그램을 수행하거나 할 때입니다.

    3) 스트레이트 / 유지 보수성 코드

    아래로 손, EF는 SQL / sprocs가 친다. 의 관계가 모델링되어 있기 때문에, 코드에서 조인은 상대적으로 드문 있습니다. 엔티티의 관계는 거의 자명 한 대부분의 질의에 대한 독자에게 있습니다. 아무것도 실제로 데이터에 무슨 일이 일어나고 있는지 이해하기 위해 계층 디버깅 또는 여러 SQL / 중간 계층을 통해 계층에서 이동하는 것보다 더 나쁜 없습니다. EF는 매우 강력한 방법으로 코드에 데이터 모델을 제공합니다.

    4) 유연성

    저장 발동 원시 SQL보다 "유연한"입니다. 당신은 빠른 홀수 특정 케이스에 대한 쿼리 생성 sprocs가와 SQL을 활용할 수 있고, 당신이하고 ORM 할 수있는 것보다 더 쉽게 기본 DB 기능을 활용할 수 있습니다.

    5) 전체

    수행 저장 프로 시저를 사용하여 대 ORM 선택의 잘못된 이분법에 빠지지. 동일한 응용 프로그램에서 모두 사용할 수 있으며, 당신은 아마해야한다. 큰 일괄 작업 (실제로 EF 호출 할 수 있습니다) 저장 프로 시저 또는 SQL에 가야하고, EF는 중간 계층의 요구의 대부분을 당신의 CRUD 작업에 사용되어야한다. 아마 당신은 보고서를 작성하기위한 SQL을 사용하도록 선택하는 것입니다. 나는 항상 것 같은 이야기의 도덕적이 같은 것 같다. 작업에 적합한 도구를 사용합니다. 그러나 그것의 마른 체형은 (.NET 4.0로) EF 요즘 아주 좋은입니다. 읽고 깊이를 이해하는 진짜 시간을 보내 당신은 쉽게 몇 가지 놀라운 고성능 응용 프로그램을 만들 수 있습니다.

    편집 : EF 5 개 간소화 자동 컴파일 LINQ 쿼리와 약간 있지만, 실제 많은 양의 물건을 위해, 당신은 확실히 테스트해야하고 현실 세계에서 당신을 위해 가장 적합한 무엇인지 분석 할 수 있습니다이 부분.

  2. ==============================

    2.저장 프로 시저 :

    저장 프로 시저 :

    (+)

    (-)

    ORM :

    (+)

    (-)

    일반적인 트레이드 오프는 유연성을 갖는 당신이 할 수 있지만 매우 빠르게 수행하는 데 어떤 제한되는 대 많은 시간을 잃고 사이에있다.

    이 질문에 대한 일반적인 대답은 없다. 그것은 거룩한 전쟁의 문제이다. 또한 손과 사용자의 요구에 프로젝트에 따라 달라집니다. 당신을 위해 가장 적합한 픽업.

  3. ==============================

    3.귀하의 질문은 기본적으로 O / RM의 대 손 쓰기 SQL입니다

    귀하의 질문은 기본적으로 O / RM의 대 손 쓰기 SQL입니다

    SQL을 사용 orm 또는 일반?

    거기 다른 O / RM 솔루션 중 일부를 한 번 봐, L2S는 하나 (NHibernate에, 액티브) 아니다

    http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software

    특정 문제를 해결하기 :

  4. ==============================

    4.LINQ --SQL을 사용하기 매우 간단 기술의 놀라운 작품이며, 전반적으로는 백 엔드에 아주 좋은 쿼리를 생성합니다. LINQ - 투 - EF 그것을 대체 할 예정 되었으나, 역사적으로 사용하기 매우 투박하고 훨씬 열등한 SQL을 생성했습니다. 그래서 아마 지금 모두 더 나은, 나는 업무의 현재 상태를 잘 모르겠지만, 마이크로 소프트는 L2EF으로 모두에게 L2S의 선 (善)을 마이그레이션 할 약속했다.

    LINQ --SQL을 사용하기 매우 간단 기술의 놀라운 작품이며, 전반적으로는 백 엔드에 아주 좋은 쿼리를 생성합니다. LINQ - 투 - EF 그것을 대체 할 예정 되었으나, 역사적으로 사용하기 매우 투박하고 훨씬 열등한 SQL을 생성했습니다. 그래서 아마 지금 모두 더 나은, 나는 업무의 현재 상태를 잘 모르겠지만, 마이크로 소프트는 L2EF으로 모두에게 L2S의 선 (善)을 마이그레이션 할 약속했다.

    L2S 나 모두를 제공하기 때문에 내가 L2EF을 선호 할 이유가 없다 개인적으로, 나는 ORM 도구 (자세한 여기 내 통렬한 비난의 연설 참조)의 열정적 인 혐오를 가지고 있고, 그래서 나는 지금까지 데이터 액세스 계층에서 필요로 예상된다. 사실, 난 L2S는 손으로 만들어진 매핑 및 상속 모델링 추가 완전히 불필요한 복잡성 등의 기능이라고 생각합니다. 하지만 그 날입니다. ;-)

  5. ==============================

    5.당신은 당신이 후있어하는 파워와 저장 프로 시저의 성능 및 엔티티 프레임 워크와 같은 도구가 제공하는 급속한 발전 인 경우 고려할 수있는 새로운 접근 방식이있다.

    당신은 당신이 후있어하는 파워와 저장 프로 시저의 성능 및 엔티티 프레임 워크와 같은 도구가 제공하는 급속한 발전 인 경우 고려할 수있는 새로운 접근 방식이있다.

    나는 작은 프로젝트에 테스트 드라이브 SQL +를 촬영했습니다, 그것은 정말 뭔가 특별하다. 당신은 기본적으로 당신의 SQL 루틴에 대한 의견을 어떤 금액을 추가하고, 그 의견은 실제 SQL 루틴에 따라 정말 좋은 객체 지향 클래스 라이브러리를 빌드 코드 생성기에 대한 지침을 제공합니다. 역에서 엔티티 프레임 워크 등의 종류.

    입력 파라미터의 입력 오브젝트의 부분이 출력 매개 변수와 결과 집합은 출력 오브젝트의 일부가, 그리고 서비스 요소는 메소드 호출을 제공한다.

    당신이 저장 프로 시저를 사용하지만, 여전히 급속한 발전을하고자 할 경우이 물건 좀보고 할 수 있습니다.

  6. from https://stackoverflow.com/questions/2698151/entity-framework-vs-linq-to-sql-vs-ado-net-with-stored-procedures by cc-by-sa and MIT license