C# 全局覆盖映射

C# 全局覆盖映射,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我有一个通过约定和IAutoMappingOverride类映射到旧Oracle数据库的域模型 因此,对于要写入数据库的每个实体,都存在一个IAutoMappingOverride类,该类指定用于PK的序列: mapping.Id(x => x.Id).GeneratedBy.Sequence("SQ_BATCHES_ID"); 现在,我正在尝试跟踪一个bug,并希望使用不同的数据库测试该模式,特别是内存中的SQLite数据库 问题是SQLite不支持序列 是否可以全局覆盖配置? 类似于

我有一个通过约定和
IAutoMappingOverride
类映射到旧Oracle数据库的域模型

因此,对于要写入数据库的每个实体,都存在一个
IAutoMappingOverride
类,该类指定用于PK的序列:

mapping.Id(x => x.Id).GeneratedBy.Sequence("SQ_BATCHES_ID");
现在,我正在尝试跟踪一个bug,并希望使用不同的数据库测试该模式,特别是内存中的SQLite数据库

问题是SQLite不支持序列

是否可以全局覆盖配置?
类似于“当ID由序列生成时,使用identity”


我不想做的是使用一组不同的
IAutoMappingOverride
实现,因为大多数情况下,ID的映射并不是唯一发生的事情。

ExposeConfiguration
中,您可以使用生成的配置完成几乎所有事情。即使更换发电机:

private void OverrideGenerators(Configuration config)
{
    var identifiers =
        config.ClassMappings.Select(x => x.Identifier)
                .OfType<SimpleValue>()
                .Where(x => x.IdentifierGeneratorStrategy
                             .StartsWith("sequence"));
    foreach (var identifier in identifiers)
    {
        identifier.IdentifierGeneratorProperties.Remove("sequence");
        identifier.IdentifierGeneratorStrategy = "identity";
    } 
}
专用无效重写生成器(配置)
{
变量标识符=
config.ClassMappings.Select(x=>x.Identifier)
第()类
.其中(x=>x.IdentifierGenerators策略
.StartsWith(“序列”);
foreach(标识符中的var标识符)
{
标识符.IdentifierGeneratorProperties.Remove(“序列”);
identifier.IdentifierGeneratorStrategy=“identity”;
} 
}

ExposeConfiguration
中,您可以对生成的配置执行几乎所有操作。即使更换发电机:

private void OverrideGenerators(Configuration config)
{
    var identifiers =
        config.ClassMappings.Select(x => x.Identifier)
                .OfType<SimpleValue>()
                .Where(x => x.IdentifierGeneratorStrategy
                             .StartsWith("sequence"));
    foreach (var identifier in identifiers)
    {
        identifier.IdentifierGeneratorProperties.Remove("sequence");
        identifier.IdentifierGeneratorStrategy = "identity";
    } 
}
专用无效重写生成器(配置)
{
变量标识符=
config.ClassMappings.Select(x=>x.Identifier)
第()类
.其中(x=>x.IdentifierGenerators策略
.StartsWith(“序列”);
foreach(标识符中的var标识符)
{
标识符.IdentifierGeneratorProperties.Remove(“序列”);
identifier.IdentifierGeneratorStrategy=“identity”;
} 
}