Mysql
 sql >> Base de données >  >> RDS >> Mysql

NHibernate.Mapping Exception. Pas de persistance pour Namespace.className

Je dirais, parce que toutes ces informations, nous devrions avoir un coupable. Il y a tellement de problèmes (enfin des problèmes en fait) avec le cartographie et code C# , que nous savons à coup sûr :

Au cas où ce fichier tel quel serait disponible pour l'usine de session NHibernate, nous obtiendrions cette exception

Ce qui pourrait être corrigé en ajoutant l'attribut d'espace de noms au mappage namespace="NhibernateORM"

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
  assembly="NhibernateORM"
  namespace="NhibernateORM"
  auto-import="true">
  <class name="Layout" table="mytable">
    <id name="Id" column="ID" type="int" generator="assigned" />
    <property name="Name"        column="name"        type="String"/>
    <property name="xCoordinate" column="xCoordinate" type="double" />
    <property name="yCoordinate" column="yCoordinate" type="double" />
  </class>
</hibernate-mapping>

Une fois que cela serait corrigé, nous obtiendrions plus tard cette exception

qui pourrait être corrigé en rendant virtuels tous les éléments de l'entité :

namespace NhibernateORM
{
    public class Layout
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual double xCoordinate { get; set; }
        public virtual double yCoordinate { get; set; }

Donc, bien sûr, nous savons - le problème est

  • mauvaise configuration dans le hibernate.cfg.xml
  • mauvaise configuration du Mapping.hbm.xml propriétés

Cela devrait faire partie du hibernate.cfg.xml :

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
      ...
      <mapping assembly="NhibernateORM"/>

le hibernate.cfg.xml doit avoir des propriétés :

  • Construire une action ===Contenu
  • Copier dans le répertoire de sortie ===Toujours copier

le Mapping.hbm.xml doit avoir des propriétés :

  • Action de création ===ressource intégrée
  • Copier dans le répertoire de sortie ===Ne pas copier