2013-08-26 2 views
0

나는 NHibernate를 처음 사용했으며이 제품이 다른 클라이언트에 선적 될 수 있으므로 (Oracle, MySQL, SQl Server, DB2 등 ..) 다른 데이터베이스를 지원할 수있는 프로젝트에서이 제품을 사용하려고 생각했다. 누가 자신의 선택에 따라 다른 데이터베이스를 사용할 수 있습니다. 그러나 다른 데이터베이스의 스키마는 동일하게 유지됩니다.NHibernate의 다중 데이터베이스 드라이버

우리가 NHibernate에 많은 데이터베이스에 상자 지원에서 제공하는 알다시피, 나는 아래에 의심이

1) 우리는 특별히 개별 데이터베이스 드라이버를 설치해야하거나 NHibernate에 설치와 함께 있습니까? NHibernate 설치 파일이있는 드라이버를 찾을 수 없습니다.

2) 구성 설정 만 변경하면 내 응용 프로그램이 다른 데이터베이스와 대화 할 수 있습니까? 즉 oracle/DB2/SqlServer 데이터베이스 중 하나를 사용하는 클라이언트에게 코드가 전송되는 경우 구성 설정과 별도로 코드를 변경하지 않아도됩니다.

+0

'NHibernate.Dialect'와'NHibernate.Driver' 네임 스페이스의 클래스들을 살펴보십시오. http://nhforge.org/doc/nh/en/index.html#configuration-optional-dialects를 참조하십시오. 작동 시키려면 코드를 작성하지 않아도되므로 "즉시"사용할 수 있습니다. 분명히 적절한 ADO.NET 연결 클래스 (a.k.a. 드라이버)를 참조해야합니다. 이러한 클래스들이 사용 가능하다면, NHibernate는 그것들을 사용할 수있을 것이다. –

답변

0

응답 질문 :

1) 아니, 자 NHibernate가 제공되지 않는 드라이버를 제공합니다. 다른 곳에서 찾아야합니다. 예를 들어, Npgsql을 PostgreSQL과 함께 사용합니다.

2) 그것은 또한 시퀀스 또는 ID 생성을위한 정체성)와 같은 DB 특정 매핑을 피함으로써 (큰 문제없이 다른 데이터베이스를 사용하기 시작하여 드라이버와 연결 문자열을 변경하여 매우 가능하다. 나는 최근에 SQL 서버에서 PostgreSQL로 마이그레이션했습니다. 당신이 얼마나 잘 수행되었는지에 대한 개념을 가지고 있기 때문에 마이그레이션 된 제품은 NHibernate의 HQL, Criteria 및 Linq API를 사용하여 70 개가 넘는 테이블을 쿼리하고 있었고 NHibernate와 관련이없는 두 데이터베이스에서 서로 다른 데이터 정렬에만 문제가있었습니다 조금도. 내 의견으로는, 당신이 질의를 위해 NHibernate를 고수하는 한, 당신은 안전 할 것이다.

데이터베이스를 클라이언트에 남겨 두므로 몇 가지 선택 데이터베이스 만 나열하고 권장하는 것이 좋습니다. 예를 들어, 고객이 나쁜 드라이버를 가로 질러 운전할 수도 있습니다.

+0

그냥 쿼리 다음 왜 우리는 NHibernate는 상자 밖으로 언급 한 데이터베이스를 지원한다고 말할까요? Hibernate가 오라클, MySQL, SQl Server, DB2와 같은 Db를 지원하는 반면, EF는 out of SQl 서버 만 지원한다고합니다. 내가 뭐 놓친 거 없니. – Sarvesh

+0

드라이버는 Entity Framework와 관련된 특정 기능을 구현해야합니다. NHibernate는 훨씬 기본적인 ADO.NET 기능을 구현할 드라이버가 필요합니다. 둘 다 많은 데이터베이스에서 작동 할 수 있지만, 드라이버는 Entity Framework에서 작동하려면 좀 더 "고급"이어야합니다. 원하는 경우 EF 호환 드라이버에 대해서는 http://msdn.microsoft.com/en-us/data/dd363565.aspx를 확인하십시오. –

관련 문제