2009-11-08 2 views
5

많은 제품 개발자가 SQL 서버, Oracle, DB2, MySql과 같은 널리 사용되는 RDBMS와 원활하게 작동하는 .NET 응용 프로그램을 작성하려고합니다. 데이터 응용 프로그램 블록을 사용하면 구성을 기반으로 데이터베이스 드라이버 (OracleClient, SQLClient 또는 OleDBClient)를 동적으로 선택합니다.데이터베이스 중립적 인 .NET 응용 프로그램

그러나 모든 데이터베이스에는 고유 한 SQL 형식이 있습니다. 하나의 SQL 코드 기반이 보편적으로 사용되는 것을 막는 미묘한 차이가 있습니다. 기능 이름이 다르거 나 날짜 처리 방식이 다르거 나 Identity 열의 처리 방식이 서로 다른 식으로되어 있습니다.

Data Direct의 타사 제품을 사용하여 미리 정의 된 이스케이프 시퀀스를 사용하여 DB 중립 코드를 작성할 수 있습니다.

이 문제를 해결하는 Microsoft의 도구 또는 제품 있습니까?

답변

12

Microsoft ADO.NET Entity Framework은 Microsoft에서 제공하는 Object-Relational Mapping 프레임 워크로, (다소) DB에 무관 한 코드를 작성할 수 있도록 고안되었습니다. 모든 주요 DBMS는 Entity Framework를 지원합니다. 많은 경우 (예 : MySQL, Postgres) .NET Framework 설치와 별도로 뭔가를 다운로드해야합니다.

참고 : 아직 고유 한 SQL에 쉘 아웃해야하는 경우가 하나도없는 O/RM 도구를 사용하여 단일 대형 프로젝트에서 작업해야합니다. DB 관련 기능 또는 성능상의 이유 (좋은 쿼리 계획을 얻기 위해 특정 방식으로 쿼리를 작성해야 함) 그러나 좋은 O/RM은 SQL을 작성하지 않아도되도록 대부분의 시간 동안 작업 할 수 있습니다.

즉, NHibernate, SubSonic 등과 같은 다른 O/RM 프레임 워크는 훨씬 더 성숙한 데, 여기에서 "성숙한"은 더 깊은 범위를 지원한다는 것을 의미합니다. DBMS 기능을 네이티브 SQL, 더 넓은 지역 사회 지원, 더 나은 성능 등을 사용하지 않고도 사용할 수 있습니다.

이것은 실제 세계에서 비교적 복잡한 프로젝트의 경우에는 그렇게 생각하지 않습니다. Entity Framework의 현재 버전이 사용 가능한 다른 O/RM 도구와 관련된 가장 좋은 방법입니다.

다가오는 .NET 4.0/VS2010 version of the Microsoft Entity Framework이 크게 개선되어 내년에는 사실이 아닐 수도 있습니다. 예를 들어 새로운 Entity Framework는 DDL을 지원하므로 DBMS와 독립적 인 방식으로 테이블과 인덱스를 만들 수 있습니다. 또한 .NET 4.0 Entity Framework는 빌드시 자동 생성 코드 인 T4 Templates이라는 멋진 기능을 활용합니다.이 기능은 O/RM 래퍼와 같이 외부에서 동기화해야하는 경우에 중요합니다. 런타임까지 데이터베이스 열의 유형을 모르는 O/RM 도구보다 나은 (일명 사전 컴파일 된) 성능을 얻을 수 있어야합니다.

+0

+1 훌륭하고 포괄적 인 답변입니다. 현재 EF는 RDBMS 만 지원한다는 점에 유의할 가치가 있습니다. 그것이 OP 질문에 대한 것입니다. 그래서 나는 당신의 대답에 아무런 문제가 없지만 갑자기 RESTful 서비스 나 다른 관계형 데이터를 통해 데이터에 액세스해야한다면 EF가 당신을 도울 것이라고 지적하고 싶습니다 데이터 소스. –

+0

EntityFramework가 Informix (Satan의 자체 데이터베이스)와 작동하지 않습니다. –

1

아니요 Microsoft에서 직접 제공하지 않습니다. 이러한 도구는 일반적으로 객체 - 관계 매퍼 또는 짧은 ORM으로 명명됩니다. 예를 들어, NHibernate는 일반적으로 널리 사용되는 ORM으로, 여러분의 필요에 매우 잘 맞습니다. 물론 Telerik OpenAccess ORM, DevExpress XPO 또는 RemObjects DataAbstract와 같은 다른 상업용 제품도 있습니다.이 제품은 데이터베이스에 의존하지 않습니다.

+0

* MS에서 직접 ORM을 * Entity Framework입니다. –

+0

ORM의 또 다른 측면은 "표준"SQL이 사용할 수있는 것뿐만 아니라 절약 할 수있는 상용구 코드의 양 (트랜잭션 및 LOB 처리)을 의미합니다. – davek

2

ORM이 아닌 RDBMS 독립적 인 SQL을 작성하기위한 도구를 찾고 있다고 생각했습니다. 이것은 매우 다른 실제 ORM 벤더에 의해 해결 된 실제 문제입니다. 난 단지 XtensiveSQL DOM 도구를 언급 할 수 있습니다.이 도구는 ORM - DataObjects.Net 용으로 개발되었습니다. 완전한 기능을 갖춘 DOM 모델을 사용하여 쿼리를 작성하는 것을 허용하는 SQL에 대한 추상화입니다. 현재 SQL DOM은 DataObjects.Net과 별도로 승격되지는 않지만 오픈 소스 제품이므로 작성자에게 반드시 문의하십시오.내가 아는 한, 그것은 제 3 자 프로젝트에서 성공적으로 사용되었습니다.

관련 문제