NHibernate fluente & # 8212; semi next_hi specifici per classe / entità quando si utilizza il generatore HiLo

StackOverflow https://stackoverflow.com/questions/1400208

  •  05-07-2019
  •  | 
  •  

Domanda

Fondamentalmente sto cercando di fare la stessa cosa di questa domanda ma con NHibernate fluente.

Ecco la mia convenzione di generazione id:

    public class IdGenerationConvention : IIdConvention
    {
            public void Apply(IIdentityInstance instance)
            {
                    instance.GeneratedBy.HiLo("1000");
            }
    }

Ora funziona alla grande, ma tutte le classi finiscono per usare lo stesso next_hi .

    create table hibernate_unique_key (
            next_hi INTEGER 
    )

Qualcuno sa come specificare che ogni classe dovrebbe usare il proprio next_hi ?

Per chiarire, vorrei finire con qualcosa come customer_next_hi e order_next_hi , supponendo che funzioni in base alle colonne. Se è basato su righe, allora va bene, purché ogni entità sappia quale riga utilizzare per il suo valore next_hi .

È stato utile?

Soluzione 2

Ho anche posto questa domanda nel gruppo Google NHibernate fluente e sembra che l'unico modo per farlo sarebbe quello di creare una classe di generatore di ID personalizzato che eredita da HiLo o TableGenerator. Da quello che raccolgo, il problema chiave è che l'istruzione SQL per creare la tabella seed viene eseguita una sola volta e non esiste un override o hook incorporato per ottenerlo per creare colonne o righe specifiche dell'entità.

Quindi qualcosa sulla falsariga di questo è quello che dovrò fare. Pubblicherò di più quando avrò un'implementazione funzionante.

Altri suggerimenti

C'è una buona soluzione a questo problema pubblicata sul blog di Anthony Dewhirt qui: http://www.anthonydewhirst.blogspot.co.uk/2012/02/fluent-nhibernate-solution-to-enable.html

Domanda interessante, ma mi chiedo perché vuoi farlo? Sul lato negativo (abbastanza minore) si genererebbero più richieste db. Il lato positivo sarebbe aumentare di qualche fattore lo spazio ID surrogato. Ma Long / BigInt non è abbastanza per tutti loro combinati? (max 18.446.744.073.709.551.615 ID!)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top