Поле Fluid Id с двумя разными компонентами Database Engine (Oracle и SQL Server) - PullRequest
1 голос
/ 17 июня 2011

Я использую Fluent NHibernate для сопоставления своих сущностей.

В моем приложении мне нужно работать с двумя разными движками (Oracle и SQL Server). Я установил движок с параметром в аргументе командной строки и отправил его в мой класс SessionFactory:

public static ISessionFactory CreateSessionFactory(string databaseEngine, string connectionString, Type entityType)
{
   switch (databaseEngine.ToLower())
   {
      case "mssql":
         return Fluently.Configure()
                      .Database(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString))
                      .Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
                      .BuildSessionFactory();
      case "oracle":
         return Fluently.Configure()
                      .Database(OracleClientConfiguration.Oracle9.ConnectionString(connectionString))
                      .Mappings(m => m.FluentMappings.AddFromAssembly(entityType.Assembly))
                      .BuildSessionFactory();
   }

   return null;
}

Это один из моих MapClass:

public class SimulacaoMap : ClassMap<Simulacao>
{
    public SimulacaoMap()
    {
        Table("SIMULACAO").GeneratedBy.Sequence("SEQUENCE_NAME"); 
        Id(x => x.Id).Column("ID_SIMULACAO");
        Map(x => x.DataReferencia).Column("DAT_REFERENCIA");
    }
}

Это работает для Oracle, но, когда я использую SQL Server, я получаю следующее исключение:

не удалось создать экземпляр генератора идентификаторов: последовательность.

Как я могу использовать Id Map, которая работает одновременно для SQL Server и Oracle?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 июня 2011
0 голосов
/ 17 июня 2011

SQL Server vNext поддерживает «ПОСЛЕДОВАТЕЛЬНОСТЬ» или изменяет эту часть «GeneratedBy».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...