MappingException:没有持久性 – NHibernate – 持久化适配器

好吧,我google了很多,并在那里找到了相同的建议(将hbm设置为嵌入式资源,在hibernate.cfg中添加hbm等等),尽管如此,我仍然没有得到它。

让我解释一下:我为检票口设备写了一个Communication Dll,我有一个配置模型类,用于通过TCP / IP配置该设备。 但是现在,我必须在DB上保留这个对象,所以我在我的模型中写了一个适配器,它将一个粘合到另一个。 这样,我的配置模型的适配器具有ID,IncludedDate等。 让我们来看看:

DeviceConf Model类:

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. } 

DeviceConf.hbm.xml映射文件:

                

保存方法:

 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; } } } } 

我在这里有另一个模型类,所有的东西都很好用,但不是这个。 每当我尝试使用Create方法保存它时,NHibernate会引发一个MappingException,其中包含“TGPass.Model.DeviceConf没有持久性”…

我做错了什么?

先感谢您。

仅仅为了完整性(也基于我的痛苦经历) ,这个例外主要有三个原因:

  1. xml映射文件不是Embedded Resource
  2. xml文件不是.dll的一部分,它被配置为映射源 (参见配置)
  3. xml文件没有默认后缀.hbm.xml

其中一个通常是: MappingException:没有持久性的罪魁祸首