【发布时间】:2010-12-30 02:35:51
【问题描述】:
我们的生产数据库是 Firebird,但希望使用 SQLite 执行内存集成测试。到目前为止,我们遇到的唯一问题是两个数据库使用的数据类型不同。
例如,当我们使用 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 和布尔字段的问题。
我想要一些关于我们可以做些什么来克服这个缺点的建议,而无需为不同的数据库复制映射代码。
【问题讨论】:
标签: c# nhibernate sqlite fluent-nhibernate firebird