2009-05-27 3 views
2

프로젝트에서 우리는 코드를 자동으로 생성하는 비주얼 디자이너 (데이터 입력 레이어 (DAL) )를 구현했습니다 (우리의 경우 : .NET의 강력한 형식의 데이터 세트 및 DataSetTableAdapters).데이터 액세스 전략을 프로젝트로 전환하는 것이 어떻습니까?

그러나 소스 컨트롤 을 사용하면 DAL에 새 항목을 추가하고 편집하는 것이 번거로 롭습니다. (우리의 경우 : ADO.NET SqlCommands 등)을 수동으로 작성하여 새 데이터 액세스 을 코딩하기 시작했습니다.이 코드는 편집자 인 을 깨끗하게 보여 주며 특히 via 소스 제어의 변경 사항을 확인하기 위해 사용됩니다.

그러나 데이터 액세스 방법을 혼합하는 것에 대해서도 걱정이됩니다. 무엇을 제안 하시겠습니까? 자동 생성 방법을 고수하면 변경이 필요할 때 또는 다른 것 인 'manual'SQL 문으로 계속 변환 하시겠습니까?

편집 : 데이터 액세스 전략을 전환하는 일반적인 문제를 해결하는 멋진 대답에 영감을 받아 나는 질문의 공식화를 일반화했습니다.

모델 데이터의 처리는 객체 지향적이지 않습니다. 우리는 사용자 지정 개체 대신 .NET DataTables를 사용합니다.

답변

2

선택이 수동 ADO로 변환하거나 데이터 세트 + 테이블 어댑터를 계속 사용하는 경우 데이터 세트를 사용하는 것이 좋습니다. 당신은 그것을 사용함으로써 무료 CRUD를 얻을 수 있으며 따라서 SQL을 생성하고 유지하는데 사용되는 시간이 줄어들어 어떤 가치도 제공하지 못합니다.

질문을 표현하는 방식으로, 데이터 세트 + 테이블 어댑터 접근법에서 벗어나는 것에 대한 논쟁이 될 수있는 더 많은 객체 지향 접근법에 대한 것처럼 들리지는 않습니다.

처리해야 할 복잡한 비즈니스 로직이있는 경우 OR-mapper + pure objects 도메인으로 일부 조사/프로토 타입을 수행 할 수도 있습니다. RAD 방식에서는 효과가 떨어집니다. 나는 Linq 2 sql (당신이 간단한 스키마/객체 구조를 가지고 있고 객체와 테이블 사이의 1 : 1 매핑에 만족한다면) 또는 NHibernate를 확인했다. Entity Framework는 충분히 성숙하지 않았습니다. 다음 버전은 더 나을 것이지만 여전히 오랜 시간이 걸릴 가능성이 있습니다.

1

DAL을 완전히 다시 작성하는 경우 Sprint.NET 또는 과 같은 지속성 프레임 워크를 조사해야합니다. Rob Conery에서

1

... 또는 SubSonic는 :)

볼 프로젝트 페이지에서 찾을 수있는 동영상 3 이상.

4

예, 필요하고 편리하면 가지고있는 것과 리펙터를 사용하십시오. 나는 다른 답변에 동의하지 않고, 일들을 혼란스럽게하지만, 다른 데이터 액세스 프레임 워크를 사용하면 한 시스템의 골치 거리를 다른 시스템과 비교할 수 있습니다. 편안함과 함께 기본으로 가십시오.

2

직접 "알몸"ADO.NET으로 이동하고 코드에서 모든 DAL 작업을 수동으로 수행하는 것은 많은 노력처럼 보입니다. 나는 확실히 다른 사람 (NHibernate, Subsonic 등)에 의해 추천 된 것과 같은 OR-mapper를 보는 것이 좋습니다.

SQL Server의 백엔드가 .NET 3.0 이상인 경우 간단한 시나리오 (데이터베이스 테이블에서 데이터베이스로 1 : 1 매핑)의 경우 Linq2SQL (죽음의 소문이 크게 과장 되었음)을 조사 할 수 있습니다. (많은 테이블, 도메인 모델의 많은 개체 상속, 복잡한 매핑 시나리오)을 위해 Entity Framework 또는 Entity Framework를 사용할 수 있습니다.

EF는 최근 부분적으로 정당화 된 IMHO와 새로운 버전 인 EF v4 (.NET 4.0 및 VS 2010 출시 예정)를 기대하고 있습니다.

마크

1

DAL은 모든 응용 프로그램의 일반적으로 가장 이상 - 설계 부분입니다. 간단하게 유지하고 지금 필요한 것을 만들거나 곧 필요하다고 합리적으로 예상하십시오. SqlCommand, SqlDataReader 등은 실제로 데이터베이스에 연결하고, 데이터베이스에서 읽고 쓰는 것보다 상대적으로 추상적입니다.

즉, 하나의 일반적인 접근 방식을 사용하면 코드가 더 읽기 쉽습니다.

관련 문제