2011-02-07 1 views
2

저는 MVC 세계에서 막 시작했습니다. 그리고 저는 VS 2010에 내장 된 표준 MVC 템플릿을 사용했습니다. 몇 가지 컨트롤러와 뷰가 있는데, 이제는 데이터베이스에 연결해야합니다.TDD 및 MVC 교차로. ORM은 잘 통합되어 있습니까?

제 3 자 회사에서 이미 정의한 상당히 큰 기존 SQL Server 2005 데이터베이스가 있습니다. 우리 회사의 특정 요구에 맞게보고/관리 인터페이스를 사용하려고합니다.

처음에는이 DB의 일부 테이블에서 목록을 가져오고 싶습니다. 그래서 ... MVC 3을 사용하면, 잘 통합되는 몇 가지 ORM 도구는 무엇입니까?

저는 또한 테스트 드라이브 디자인 접근법을 사용하려고합니다. 데이터 삽입/업데이트/삭제가 필요한 테스트를 위해 무엇을해야할지 모르겠습니다. 그것은 "모의"가 시작된 것입니까?

+0

ORM을 선택하는 데 도움이되도록 (jfar에서 말한 것처럼 모든 ORM은 MVC에서 작동해야 함) : http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

+0

와우 그 질문에 대한 당신의 대답은 훌륭했습니다. 나를 가리켜 주셔서 감사합니다. 나는이 주제에 관한 50 가지의 질문을 거의 읽었지만, 아직 그것에 도달하지 못했다고 생각한다. 포인터 주셔서 감사. –

답변

4

모든 ORM은 Asp.net MVC와 잘 통합됩니다. ORM 통합을 어렵게 만드는 asp.net mvc에는 아무 것도 없습니다.

가장 큰 장애물은 기존 데이터베이스를 사용하는 것입니다. NHibernate와 Entity Framework 4는 레거시 데이터베이스에 잘 매핑되어 있다는 것을 알고있는 유일한 무료 ORM입니다. EF4는 기존 데이터베이스에 매핑하기에는 그리 좋지 않습니다. 그린 필드 개발을 통해 더 잘 작동합니다. 반대로 NHibernate는 생각할 수있는 거의 모든 시나리오를 매핑 할 수 있습니다.

테스트 용이성은 주로 사용할 데이터 액세스 패턴에 따라 달라집니다. 리포지토리 패턴은 테스트하기 쉽기 때문에 인기가 있습니다. 조롱은 필요하지 않습니다.

1

Castle 구성 요소 (Windsor, Dynamic Proxy 및 Active Record)를 사용하는 것이 좋습니다. Active Record는 수동으로 또는 Dynamic Proxy의 인터셉터를 통해 조작 할 수있는 속성을 가진 모델을 생성하므로 기본적으로 데이터를 모의 할 수 있습니다. 리포지토리 및 데이터 서비스를 마무리하면 데이터 액세스를보다 효율적으로 제어 할 수 있습니다.
적용 가능한 경우 specifition pattern을 사용하면 유연한 쿼리를 쉽게 허용 할 수 있습니다.
IEnumerable<T> 또는 사양을 전달할 수 있도록 데이터 서비스에 액티브 레코드가있는 Linq를 사용하십시오 (NHibernate의 추상 조건을 랩핑하거나 변환하지 않을 수도 있고 DetachedCriteria으로 변환하거나 DetachedCriteria 또는 HQL 또는 캡슐화하는 모든 것을 포함 할 수 있음).)를 쿼리로 사용합니다.
그런 식으로 데이터베이스 액세스를 쉽게 조롱하고 리팩터링하고 더 쉽게 테스트 할 수 있습니다.

+0

ActiveRecord는 저장소 패턴과 같은 것보다 훨씬 테스트하기가 어렵습니다. 뭔가를 "테스트하기 쉽다"라고 말한 다음 동적 프록시 인터셉터에 대해 이야기하기 시작할 수는 없습니다. 이런. – jfar

+0

@ jar : 나는 강력하게 동의하지 않습니다. 활성 레코드에 대한 데이터를 생성하는 것은 Hibernate를 직접 사용하는 것보다 훨씬 쉽다. –

+0

필자는 물리적 인 메모리 테스트에 대해 혼란스러워합니다. 물리적 테스트를 통해 ORM을 사용하여 수행해야하는 작업은 새로운 Person() {FirstName = "test"}을 만들고이를 유지하는 것입니다. 우리가 메모리에서 이야기하고 있다면 저장소와 함께 필요한 모든 것은 똑같은 일을합니다. 인터셉터에 연결하지 않아도됩니다. 정적 언어 테스트에서 클래스가 지속성에 직접 연결될 때마다 언제든지 더 어렵습니다. 이것은 단순한 사실이며 Repository와 같은 패턴이 존재하는 이유입니다. – jfar