2011-01-05 6 views
3

SQL 서버 db를 간단한 (많은 제약 조건이 아닌) 테이블로 준비했습니다. 이제 테이블에 대한 DAL 및 개체 클래스를 생성해야합니다..NET ORM 도움말이 필요합니다.

.NET ORM (NHibernate 또는 기타 무료 FW와 같은)이 얼마나 도움이 될 수 있습니까? 기본적으로 클래스 및 DB 액세스 기능을 작성하는 힘든 작업을 돕습니다. 이러한 객체 클래스에 비즈니스 로직을 작성하는 데 더 많은 시간을 할애 할 것입니다.

나중에 테이블을 추가/변경하는 것이 쉬울까요? 나는 ORM에 대한 개념적 아이디어가 있지만 어떤 것을 사용하는데있어서 실제적인 경험이 없다.

답변

3

데이터 액세스 기능뿐만 아니라 클래스를 자동 생성하는 데 Linq to Sql 또는 Entity Framework을 사용할 수 있습니다.

데이터베이스 테이블을 Visual Studio 내에서 DBML (L2S) 또는 EDMX (EF)로 드래그 앤 드롭 할 수 있으며 일대일로 열에 매핑 된 멤버가있는 클래스와 정의했다.

Linq to Sql Classes 만들거나 ADO.NET Entity Data Model는하려면 다음 단계를 수행하십시오

  • 당신의 프로젝트 중 하나에서 Visual Studio에서 마우스 오른쪽 버튼을 클릭
  • 추가 => 새 항목
  • 선택 Linq to Sql Classes 또는 ADO.NET Entity Data Model
  • 이 뜻을 클래스를 만들고 사용자 정의하기위한 빈 디자인보기를 작성하십시오.
  • 사용자 Server Explorer 데이터베이스 연결을 엽니 다.
  • 테이블을 DBML 또는 EDMX 캔버스로 끌어다 놓은 다음 완료되면 저장하십시오. 예컨대

:

  • 테이블 User 클래스에게된다 User
  • 테이블 UserFirstName있는 경우는 속성을하게 FirstName
  • 테이블 UserContact과 관계가있는 경우에는에 IList<Contact> Contacts를 생성 User 클래스입니다. 이것은 당신이 또한 당신의 클래스를 생성합니다 SQLMetal를 사용할 수있는 테이블을지도하지만 변경을 할 수 있도록 더 많은 사용자 정의 방법을 필요로하는 경우가 발생 DataContext

내에서 user.Contacts.Where(c => c.ContactId == 7000) 같은 코드를 작성하게됩니다.예를 들어, int 속성을 enums으로 변환하십시오.


NHibernate 또한 좋은 옵션이며 먼 길을왔다.

+0

DBML로 드래그 앤 드롭 하시겠습니까? VS에서 DBML 옵션은 어디에 있습니까? 따라야 할 직접적인 단계가 도움이 될 것입니다. –

+0

업데이트를 참조하십시오 .... – hunter

1

DAL을 생성 할 수있는 많은 도구가 있습니다.

SubSonic은 ORM이 아니지만 DAL을 생성하는 코드 생성 도구입니다.

Entity FrameworkLinq to SQL (Microsoft에서 제공) 또한 Visual Studio의 디자인 화면과 함께 DAL을 생성합니다.

이러한 모든 추가 및 변경 테이블을 사용하려면 DAL을 다시 생성해야하므로 이러한 파일에 대한 변경 및 사용자 지정이 손실 될 수 있습니다.

+0

음속은 ORM입니다. 부분 클래스와 같은 것을 올바르게 사용하면 코드면에서 변경 사항을 잃지 않고 데이터베이스를 변경할 수 있습니다. –

1

Linq2SqlEntity framework 모두 큰 도움이 될 수 있습니다. 테이블 업데이트에 관한 질문 : 예, 나중에 테이블을 쉽게 업데이트 할 수 있습니다. 손으로 모든 것을 작성한 것보다 훨씬 쉬워졌습니다 (손으로 수정해야하는 경우).

+0

많은 학습 곡선이 있습니까? 아니면 간단히 사용할 수 있습니까?어떻게 linq2sql 클래스와 DAL을 생성합니까 (EF보다 단순 해 보입니다), 어떤 도구라도 제공합니까? –

+1

@Munish Goyal : 나는 학습 곡선이 매우 가파른 것이라고 생각하지 않습니다. 예, 도구가 있습니다. 테이블을 Visual Studio에 드래그 앤 드롭 만하면됩니다. "Linq2Sql 데이터 클래스"파일을 프로젝트에 추가하고 "서버 탐색기"에서 테이블을 드래그하기 만하면됩니다. 그만큼 쉽지. –

+0

"Linq2Sql 데이터 클래스"파일? .cs 파일이나 템플릿? pl은 정교합니다. wud가 도움이 될 것입니다. –

0

Nhibernate는 모든 데이터 액세스 로직을 처리합니다. 가능한 모든 외래 키와 기본 키를 정의하는 것이 좋습니다. 또한 복합 기본 키 대신 명시 적 기본 키를 갖는 것이 더 간단합니다.

개체 클래스를 생성하려면 T4 템플릿을 사용하는 것이 좋습니다. 온라인에서 사용할 수있는 다양한 샘플 템플릿이 있으며 원하는 것을 정확하게 수행하기 위해 직접 작성할 수 있습니다.

이러한 개체 클래스를 데이터 컨테이너로 사용하고 이러한 DAL 클래스를 사용하는 별도의 클래스로 비즈니스 논리를 구현하는 것도 좋은 생각입니다. 기본 테이블이 변경되면이를 다시 생성 할 수있는 기능이 간단 해집니다.

0

나는 조금 늦었지만 Nuget과 Github의 Cocoon ORM이 좋다. 데이터 액세스 코드를 동적으로 작성합니다. 웹 사이트에서 아래 http://guidelinetech.github.io/cocoon-orm/

기능 목록 : GET에 창조에 참여하기 자동으로 도메인 객체 속성

  • AutoCrud에 데이터베이스 필드의

    • 자동 매핑 저장 프로 시저 매개 변수에
    • 자동 매핑 도메인 개체 속성을 (선택)
    • 실행 계획 및 캐시 친화적 인 매개 변수화 된 SQL을 쉽게 검사 할 수 있도록 동적으로 만듭니다.
    • 단순 d 엔티티 프레임 워크
    • 회귀의 그것과 유사 ATA 주석 코드 두 번째 환경
    • 에서 코드 첫 번째 환경에서 (우리와 같은) 오타쿠에 대한 사용
    • 클래스 생성 도구를 사용
    • 테이블 생성 도구를 도구 벤치마킹
    • 포함 된 Comb GUID 또는 Sequential UID generator를 사용하여 비 순차적 순차 고유 ID를 쉽게 생성 할 수 있습니다. SQL 서버와 호환
    • 2,012분의 2,008/20014/+와 누에 고치 ORM 자체해야하는
    • 를 사용하여 약한 카피 레프트 LGPL 라이센스하에 자신의 고유 코드에서 누에 고치 ORM 라이브러리 (변경 (다른 TSQL 데이터베이스와 가능한) 푸른 SQL 공유 됨. 우리가 함께 할 수 있도록 우리에게 알려주십시오.)
  • 관련 문제