나는 대부분의 데이터베이스가 독립적 인 Fluent NHibernate 규약을 가지고있다.유창한 NHibernate에서 DB 특정 관습
Public Sub Apply(ByVal instance As IPropertyInstance) Implements IConvention(Of IPropertyInspector, IPropertyInstance).Apply
instance.CustomSqlType("VARCHAR2(50 BYTE)")
End Sub
정말 난 그냥 (즉 처음 개발 객체) DB 생성을위한 이와 같은 컨벤션을 사용하지만, DBMS 문자열 속성에 대한 의존과 같은 하나 몇 가지가 있습니다. 이 모든 것이 잘 작동하고 오라클에 좋지만 SQLite DB에는 VARCHAR2 유형이 없기 때문에 인 메모리 SQLite DB를 사용하여 단위 테스팅을하고 분명히이 컨벤션은 작동하지 않을 것입니다.
누구나 이런 상황에서 Fluent NHibernate를 구성하는 방법에 대한 좋은 조언이나 참고 자료가 없습니까?
현재로서는 데이터베이스 독립적이며 하위 디렉토리/네임 스페이스에 종속적 인 규칙을 갖는 일반적인 규칙 집합이 있다고 생각합니다. 그런 다음 특정 일반 DBMS와 관련된 규칙뿐만 아니라 모든 일반 규칙을 선택하는 사용자 지정 ITypeSource 구성 요소를 지정할 수있는 일종의 구성을 갖게됩니다. SqlConventionTypeSource, OracleConventionTypeSource ...
친절하게는 Ryan.
응답 해 주셔서 감사합니다. –
참고; 나는 Windsor IoC로 NHibernate를 구성하기 위해 Castle.Facilities.NHibernateIntegration 라이브러리를 사용합니다. 이 방식으로 NHibernate를 사용하는 모든 서비스/발표자는 ISessionManager를 필수/선택적 클래스 종속으로 생성 할 수 있습니다. 서비스를 해결하면 Windsor는 ISessionManager의 구체적인 구현을 주입합니다. 기본적으로 세션 관리 (예 : 세션 당 요청 당 개방 세션)에 대해 너무 걱정할 필요가 없으며 ISessionManager를 조롱하는 좋은 단위 테스트를 수행 할 수 있습니다. –
IConfigurationBuilder 인터페이스를 통해 세션 팩토리의 기본 구성을 수정할 수 있습니다.이 인터페이스에서는 규약과 자동 매핑을 사용하여 유창하게 NHibernate 세션 팩토리를 구성합니다.필자는 FNH AutoPersistenceModel에게 협약을 어디에서 찾을 것인지 알려줄 필요가 있습니다. 규칙은 재사용을위한 좋은 후보자이며 상당히 복잡하고 잘 정의되어 있으며 변경 될 가능성이 거의 없습니다. 이것은 내 원래의 문제로 돌아가며, 일부 관례는 DB 고유 (즉, 스키마를 생성하는 데 사용되는 규칙)입니다. –