1

規則とIAutoMappingOverride<T>クラスを介して従来の Oracle データベースにマップされたドメイン モデルがあります。

そのため、データベースに書き込まれるすべてのエンティティIAutoMappingOverride<T>に対して、PK に使用するシーケンスを指定するクラスが存在します。

mapping.Id(x => x.Id).GeneratedBy.Sequence("SQ_BATCHES_ID");

今、私は現在バグを追跡しようとしており、そのスキーマを別のデータベース、特にインメモリ SQLite データベースでテストしたいと考えています。

問題は、SQLite がシーケンスをサポートしていないことです。

構成をグローバルに上書きすることは可能ですか?
「シーケンスによって ID が生成される場合は、代わりに ID を使用してください」という行に沿ったもの。

私がやりたくないのは、別のIAutoMappingOverride<T>実装セットを使用することです。ほとんどの場合、ID のマッピングだけが起こっているわけではないからです。

4

1 に答える 1

1

では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";
    } 
}
于 2013-01-31T11:43:23.590 に答える