Fluent Nhibernate:如何根据基础数据库更改字段映射?

Fluent Nhibernate:如何根据基础数据库更改字段映射?,nhibernate,sqlite,fluent-nhibernate,nhibernate-mapping,Nhibernate,Sqlite,Fluent Nhibernate,Nhibernate Mapping,我正在使用Nhibernate 3.0和Fluent Nhibernate进行项目工作。我们使用SQL Server 2008进行生产。对于版本控制,我们依赖于SQL Server端生成的时间戳 最近,我开始使用内存中的SQLite数据库编写存储库测试。不幸的是,SQLite无法生成时间戳,因此任何插入都会因违反约束而失败 当我编译SQLite基础数据库的映射时,我想将版本映射更改为Nhibernate托管的版本映射。传达此想法的代码大致如下所示: public class CommonClas

我正在使用Nhibernate 3.0和Fluent Nhibernate进行项目工作。我们使用SQL Server 2008进行生产。对于版本控制,我们依赖于SQL Server端生成的时间戳

最近,我开始使用内存中的SQLite数据库编写存储库测试。不幸的是,SQLite无法生成时间戳,因此任何插入都会因违反约束而失败

当我编译SQLite基础数据库的映射时,我想将版本映射更改为Nhibernate托管的版本映射。传达此想法的代码大致如下所示:

public class CommonClassMap<T> : ClassMap<T> where T:Entity
{
    public CommonClassMap()
    {
        if (SQLITE)
        {
            Version(n => n.Version);
        }
        else
        {
            Version(n => n.Version).CustomSqlType("timestamp").UnsavedValue("null").CustomType("BinaryBlob").
                Generated.Always();
        }
public类CommonClassMap:ClassMap其中T:Entity
{
公共类映射()
{
if(SQLITE)
{
版本(n=>n.Version);
}
其他的
{
Version(n=>n.Version).CustomSqlType(“时间戳”).UnsavedValue(“null”).CustomType(“二进制Blob”)。
生成的。始终();
}

不幸的是,我无法找到任何方法在运行时更改映射或从类映射中读取底层数据库信息。欢迎提供任何帮助。

我所做的是为不同的数据库提供程序提供单独的
类映射。但是,我不需要能够在运行时更改它,它只配置一次在应用程序的整个生命周期内

您仍然可以保留您的系统,但我想您必须自己保留
SQLITE
和类似的东西。也不要太依赖于在一个数据库提供程序(如SQLITE)上运行的代码也会在其他提供程序上运行,所以您也应该始终包括对SQL Server的测试