MappingException: No persister for – NHibernate – Persistenza di un adapter

Beh, ho cercato molto su google e ho trovato gli stessi consigli tutti lì (imposta hbm come Embedded Resource, aggiungi hbm a hibernate.cfg, ecc.), E nonostante ciò, non riesco ancora a capirlo.

Lasciatemi spiegare: ho scritto una Communication Dll per un dispositivo di gate ticket, e lì ho una class del modello di configurazione, che uso per configurare quel dispositivo tramite TCP / IP. Ma ora, devo mantenere questo object su DB, così ho scritto un adattatore nel mio modello che incolla l’uno nell’altro. In questo modo, ho un adattatore per il mio modello di configurazione che ha un ID, IncludedDate e così via. Vediamo:

Classe del modello DeviceConf:

public class DeviceConf : BaseModel // which have ID, IncludedDate, etc { private TGCommHelper.Entities.Configuration.TicketGateConfig _conf; public TGCommHelper.Entities.Configuration.TicketGateConfig conf { get { return _conf; } private set { _conf = value; } } public DeviceConf() { conf = new TGCommHelper.Entities.Configuration.TicketGateConfig(); } public DeviceConf(TGCommHelper.Entities.Configuration.TicketGateConfig config){ conf = config; } public virtual string IP { get { return conf.IP; } set { conf.IP = value; } } public virtual string MAC_ADDR { get { return conf.MAC_ADDR; } set { conf.MAC_ADDR = value; } } //... and so on. } 

File di mapping DeviceConf.hbm.xml:

                

Metodo di salvataggio:

 public virtual void Create(T saveObj) { using (var session = GetSession()) { using (var trans = session.BeginTransaction()) { try { session.Save(saveObj); trans.Commit(); } catch (Exception e) { throw e; } } } } 

Con altre classi modello che ho qui, tutte le cose funzionano bene, ma non con questo. Ogni volta che provo a salvare questo con il metodo Create, NHibernate genera una MappingException con “No persister for TGPass.Model.DeviceConf” …

Dove sto sbagliando?

Grazie in anticipo.

Solo per completezza (anche in base alla mia dolorosa esperienza) , ci sono principalmente tre ragioni per questa eccezione:

  1. il file di mapping xml NON è makred come Embedded Resource
  2. il file xml non fa parte di dll che è configurato come origine di mapping (vedere la configurazione di )
  3. il file xml non ha il suffisso predefinito .hbm.xml

Uno di questi è di solito il colpevole di: MappingException: No persister per …