프로덕션 데이터베이스가 Firebird이지만 SQLite를 사용하여 in-momory 통합 테스트를 수행하고자하는 상황이 있습니다. 지금까지 우리가 직면 한 유일한 문제는 두 데이터베이스에서 사용되는 데이터 유형의 차이입니다.FluentNHibernate 테이블 데이터 타입 (다른 데이터베이스 벤더)
예를 들어 FluentNHibernate를 사용하여 각 도메인 객체를 매핑 할 때 명시 적으로 지정해야 할 때마다 열 유형을 지정합니다. 다음 클래스의 속성을 사용하여 CustomSqlType을 지정합니다.
public static class DATATYPES
{
public const string SMALLINT = "SMALLINT";
public const string BOOLEAN = "CHAR(5)";
public const string INTEGER = "INTEGER";
public const string DECIMAL_MONEY = "DECIMAL(18,4)";
public const string DECIMAL_EXCHANGE_RATE = "DECIMAL(18,8)";
public const string DECIMAL_QUOTE_PRECISION = "DECIMAL(7,6)";
public const string DECIMAL_PERCENT = "DECIMAL(6,2)";
public const string BLOB_NULLABLE = "BLOB SUB_TYPE 1 SEGMENT SIZE 1 CHARACTER SET UTF8 COLLATE UTF8";
public const string BLOB_NOTNULL = "BLOB SUB_TYPE 1 SEGMENT SIZE 1 CHARACTER SET UTF8 NOT NULL COLLATE UTF8";
}
위 클래스에서 볼 수있는 값을 Firebird 데이터베이스의 CHAR (5) 열에 매핑 할 수 있습니다. 이제 SQLite에 대해 동일한 매핑을 사용하려고하므로 BLOB 및 부울 필드에 문제가 발생합니다.
다른 데이터베이스의 매핑 코드를 복제하지 않고이 단점을 극복하기 위해 수행 할 수있는 것에 대한 조언이 필요합니다.
그래서 CustomSqlType에 대한 규칙을 적용해야합니다. 우리는 데이터베이스간에 쉽게 상호 교환 할 수 있기 때문에 아주 좋은 생각 인 것 같습니다. 예제를 제공해 줄 수 있습니까? 우리는 또한 조사 중이다. – Hugusta
감사합니다. Rich 님, 우리는이 문제를 해결할 수있는 규칙을 구현했습니다. 좋은 대답! – Hugusta