Generator Hilo ou Sequence para Firebird

30 views
Skip to first unread message

Edmar Munhoz

unread,
Jun 8, 2016, 7:58:06 AM6/8/16
to NHibernate-Br
Olá, realizei os mapeamentos das classes para usar com banco Firebird e na documentação do NHibernate diz que o tipo de Generator para Firebird é o Sequence e para multiplataforma, que acredito que seja para poder funcionar em mais de um banco, a documentação diz para usar o Generator Hilo.
Eu tentei usar ele mas não funciona, persisto os dados realizo o commit da transação mas quando vou olhar no banco os dados não estão lá, mas se altero o Generator para Identity funciona.
Eu fazendo o mapeamento por código, segue abaixo como estou fazendo:

Id(x => x.AttachmentId, x => {
  x.Column("attachment_id");
  x.Generator(Generators.HighLow, y => x.Params(new { sequence = "Gen_Cob_Boleto" } )); 
});

Paulo Quicoli

unread,
Jun 8, 2016, 8:37:29 AM6/8/16
to nhiber...@googlegroups.com
Oi Edmar, beleza?

Cara, eu uso NH com Firebird... e sempre usei o Hilo. Aqui pra fazer o mapeamento estou usando o FluentNH... segue um mapeamento meu pra vc ter uma ideia:


 public class CidadeMapping: ClassMap<Cidade>
    {
        public CidadeMapping()
        {
            Id(x => x.Id).GeneratedBy.HiLo("50");
            Map(x => x.Codigo).Generated.Insert().Index("Cidade_Codigo_Idx");
            Map(x => x.Descricao).Length(50).Index("Cidade_Descricao_Idx");
            Map(x => x.Uf).Length(10);
            Map(x => x.CodigoIbge).Length(10).Index("Cidade_CodigoIbge_Idx");
        }
    }

Eu não uso o mapeamento por código nativo do NH....  tô achando meio confuso esse trecho que vc postou...
se vc entender como funciona o Hilo... ele não usa generator... ele cria uma tabela pra controlar os Ids...

O Hilo que usa generator é o SeqHilo....  

Espero que tenha te ajudado :)

abraço




--
Você recebeu essa mensagem porque está inscrito no grupo "NHibernate-Br" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nhibernate-b...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para nhiber...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/nhibernate-br.
Para mais opções, acesse https://groups.google.com/d/optout.

Fernando Leal

unread,
Aug 23, 2016, 2:58:12 PM8/23/16
to NHibernate-Br
Eu utilizo NHibernate e Firebird a algum tempo e utilizo a seguinte abordagem para mapear Id com generator:

Id(t => t.PropriedadeId).GeneratedBy.Native("NOME_GENERATOR").Column("NOME_DA_COLUNA_ID");

No seu caso acho que seria algo similar a isso:

Id(x => x.AttachmentId).GeneratedBy.Native("Gen_Cob_Boleto").Column("attachment_id");

E dessa forma funciona em outros bancos de dados (já testei no FIREBIRD, MySql, Postgres e ORACLE), inclusive os que não tem nem generator e nem sequence, nesses casos eles simplismente utilizam a abordagem padrão, como no MySql o Identity.

Espero que lhe ajude.
Reply all
Reply to author
Forward
0 new messages