2011-09-28 2 views
2

데이터 액세스와 관련하여 프로젝트에 데이터 세트를 사용하는 데 익숙합니다. 이제 엔티티 데이터 프레임 워크를 배우고 & 데이터를 검색하는 방법을 배우기 위해 작업하기 쉬운 앱을 설정했습니다.엔티티 데이터 프레임 워크 - 101

인터넷에서 찾은 모든 자습서와 샘플은 저에게 너무 앞서 있습니다.

어디에서 시작할 지,이 모델의 장점은 무엇인지, 어떤 시나리오에서 엔티티 프레임 워크를 사용해야하는지, 시작하기 전에해야 할 것들 (기초)을 안내해 줄 수 있습니까?

내 데이터 세트도 정상적으로 작동합니다. 데이터에 액세스하는 방식을 고수하지 않는 이유가 있습니까? 또는 웹 사이트 사용자에 따라 고려해야 할 사항입니다 (속도 목적 등)

정보가 필요합니다.

+1

이것은 너무 광범위한 질문입니다. 모든 것을 거치려면 작은 논문을 쓸 수 있습니다. –

답변

1

당신이 ("내가 ORM을 사용해야하는 경우/데이터 집합에 하드 코딩 된 SQL을 반대?")는 Q에 적절하게 해결하기가 너무 광범위 요구하고 질문 .. 사전에 감사합니다 & 웹 사이트. 그러나 여기에 몇 가지 중요한 사항이 있습니다.

  • ORM은 데이터베이스의 테이블에서 클래스를 생성하기 때문에 (또는 다른 방법으로 경로를 선택해야합니다.) 코드에 필드 및 테이블 이름을 포함하는 대신 해당 클래스에서 코드 상호 작용을 사용합니다. 이를 통해 컴파일 타임 안전성을 확보 할 수 있으며, 배포 한 지 6 개월 만에 애플리케이션 중 하나를 살피고 응용 프로그램의 중단 시간에 숨겨진 것을 발견 할 수 있습니다.
  • ORM의가 아닌 문자열에서 SQL을 내장 또는를 통해 모든 액세스하는 저장 프로 시저 중 하나 (나는 'customer.Orders'또는 코드에서 'order.Customer'과 같은 일을 할 수있다) 관련 기관에 액세스 더 자연스러운 수단을 제공

과 단점 모두에서

  • 하지만 간단한 작업의 몇 ORM 생성 된 SQL은 손으로 만들어진 SQL 또는 저장 프로 시저보다 느리게 될 가능성이 높습니다. 속도가 아닌 안전과 편의를 위해 ORM을 사용합니다.
  • 지연로드 (관련 엔터티가 필요없는 경우 맨 앞에로드되는 경우)와 같은 기능을 사용하기 쉽고 실현하지 않고 성능 저하가 발생합니다.
  • ORM (관계를 의미하고 업데이트, 삭제 및 삽입을 통해 사용하는 ORM)을 최대한 활용하려면 일반적으로 전체 개체를 단지 일부가 아닌 메모리로 되돌려 보내야합니다.
+0

지나치게 가혹하게 ORM을 판단한다고 생각합니다. 중요한 학습 곡선이 있지만, 개발자가 자신이하는 일을 잘 알고 있다면 좋은 ORM은 실제로 이러한 문제를 가지고 있지 않습니다. 개발자가 게으른 경우 특히 모든 기술을 나쁜 방법으로 사용할 수 있습니다. ORM에는 단점이 있지만 목록에는 포함되지 않습니다. –

+0

@MichaelMaddox : ORM으로 생성 된 SQL은 가장 단순한 연산 이외에도 손으로 만들어진 SQL보다 보편적으로 느립니다. 예를 들어 열의 로딩은 일반적으로 모든 테이블의 직교 좌표를 생성 한 다음 클라이언트 측에서 롤업하는 방식으로 이루어집니다. 결과적으로 서버에서 중복되는 데이터가 가득한 엄청난 * 결과 세트가 생성 될 수 있습니다. 또한, 메모리에서 해당 객체없이 DML을 실행할 수있는 ORM은 알지 못합니다. 객체를 "속여서 ORM의 컨텍스트에 첨부"하는 것과 같은 (직관적이지 않은) 방법이 있지만 저는 인식하지 못합니다. –

+0

나는 매우 pro-ORM이다. 내 프로젝트에서 EF4를 사용하고 다른 방식으로는 가지지 않지만 사람들이 생각하는 머리가 두드리는 명백한 선택을 대표하지는 않습니다. 그들은 장점과 단점을 가지고 있으며 쿼리 속도의 차이는 생산성과 개발 시간의 증가보다 중요하지 않습니다. –

1

나는 아담 로빈슨이 만든 모든 점에 동의하지만, 나는 (내 경우 EF4.0에서)는 ORM에, 그러나 이동을 추가 할 모든 개발자의 생산성에 대해 했다. 이전에는 모든 수작업으로 코딩 된 클래스와 데이터 액세스 방법을 사용했으며 모든 데이터 액세스에 대해 신중하게 제작 된 저장된 procs를 만들었습니다. 솔직히 말해서 성능은 거의 아무 것도 이길 수 없었습니다. 그러나 손으로 코딩하는 데는 많은 시간이 필요했습니다.

저는 이전 방법 대신 EF4.0을 사용하여 대부분의 개발 노력을 절반으로 줄이고 사용자는 눈에 띄지 않는 속도 저하를 눈치 채지 못했습니다.추가 성능이 필요한 몇 가지 경우에는 필자는 필요한 경우 몇 가지 데이터 액세스 및/또는 저장 프로 시저를 코딩하여 손쉽게 사용할 수 있습니다.

귀하의 질문에 대한 답변에서 귀하의 행동 방식에 "잘못된"것은 없지만 ORM을 학습하는 전체 과정을 거쳐야하고, 프로가 귀하를 대신 할 것인지 확인해야합니다.

0

ORM (모든 ORM) 학습 곡선이 중요합니다. 프로세스 초반에 단순한 코드 생성이 당신을 속일 수는 없습니다.

누군가가 ORM과 데이터 세트를 모두 알고 있다면, 나는 그들이 ORM 99 %를 선택할 것이라고 생각합니다. 장점은 매력적입니다. ORM은 완벽하지는 않지만 거의 모든 시나리오에서 ORM이 데이터 세트보다 우수합니다.

데이터 세트가 당신을 위해 작동하고 ORM의 학습 곡선이 당신을 혼란스럽게한다면 데이터 세트를 사용하는 것이 좋습니다. 나는 오랜 시간 동안 연구를하고 오랜 시간이 걸릴지라도 ORM에 대한 학습 곡선을 계속 지키도록 권합니다.