Не могли бы вы использовать разные классы ClassMap для каждой конфигурации? Возможно, вам придется явно добавить каждый ClassMap в конфигурацию сеанса Fluent, что сделает его более многословным, но это будет означать, что вы можете использовать другой класс отображения для разных баз данных.
public class BinaryFileMSSqlServer
{
public BinaryFile()
{
m.Map(x => x.BinaryData).CustomSqlType("varbinary(MAX)");
m.Map(x => x.ContentType);
m.Map(x => x.FileName);
m.Map(x => x.FileSize);
}
}
public class BinaryFileSQLite
{
public BinaryFile()
{
m.Map(x => x.BinaryData);
m.Map(x => x.ContentType);
m.Map(x => x.FileName);
m.Map(x => x.FileSize);
}
}
Ваше беглое отображение сеанса будет выглядеть примерно так:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c
.FromAppSetting("connectionString"))
.Cache(c => c
.UseQueryCache()
.ProviderClass<HashtableCacheProvider>())
.ShowSql())
.Mappings(m => m.FluentMappings
.Add<BinaryFileMSSqlServer>()
.Add<...>()
.Add<...>())
.BuildSessionFactory();
Вам необходимо заполнить каждый из ваших классов сопоставления вручную. Вам также необходимо создать отдельную свободную конфигурацию для SQLite, используя, где это необходимо, специальные классы SQLite.