2013-05-06 4 views
0

Je pensais que je connaissais NHibernate, mais je dois faire quelque chose de stupide. J'ai une table/classe appelée Catégorie. Quand je tire des données de ma méthode GetAll, rien ne revient, mais il n'y a pas d'erreur non plus.NHibernate ne voit pas la table, MappingException

La classe est:

namespace Model 
{ 
    [Serializable] 
    public partial class Category 
    { 
     public virtual int Id { get; set; } 
     public virtual DateTime CreatedOn { get; set; } 
     public virtual DateTime UpdatedOn { get; set; } 

     public virtual string Name { get; set; } 

     public override bool Equals(object oneObject) 
     { 
      return oneObject is Category && (this.GetHashCode() == ((Category)oneObject).GetHashCode()); 
     } 

     public override int GetHashCode() 
     { 
      return Id.ToString().GetHashCode(); 
     } 

    } 
} 

fichier de mappage:

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" namespace="Model" assembly="Model" xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Category" lazy="true" table="`categories`"><!--test only!!--> 
     <id name="Id" access="property" column="`category_id`"> 
      <generator class="native" /> 
     </id> 
    <property name="Name" column="`name`" length="50" /> 
    </class> 
</hibernate-mapping> 

Si j'ajoute beaucoup à une référence dans une autre table, il des erreurs avec: An association from the table manufacturer_categories refers to an unmapped class: Model.Category.

Il me semble évident que NHibernate ne reconnaît pas mon fichier de mappage. Quelle chose stupide manque-t-il?

+1

Didja vérifier des choses évidentes, comme l'ajout de la partie .hbm au fichier xml, ou en vous assurant qu'il est défini comme contenu intégré? –

+0

@Cosmo_D - Oui, j'ai vérifié le fichier .hbm.xml. A quoi sert le "Contenu incorporé"? – scojomodena

+0

Voir http://stackoverflow.com/questions/16340974/createsqlquery-works-but-queryover-doesnt-with-nhibernate/16377359#16377359 pour la ressource intégrée – Rippo

Répondre

1

Avez-vous vérifié que votre fichier XML est marqué comme une ressource intégrée?

enter image description here

2

utilisant le nom complet qualifié de la classe, peut résoudre le problème

<class name="Modle.Category" lazy="true" table="`categories`"> 

Assurez-vous aussi que lors de la configuration Nhibernate vous avez ajouté l'ensemble contenant fichier de mappage Catégorie

Configuration cfg = new Configuration(); 
cfg.Configure(); 

// Add class mappings to configuration object 
Assembly mappingAssembly = AssemblyContatingTheCategoryMappingXMLFile; 
cfg.AddAssembly(mappingAssembly); 

Un autre indice sera définir le fichier XML en tant que Embedded Resource sur l'onglet de propriété

+0

J'ai ajouté quelques suggestions qui peuvent être utiles pal. –

Questions connexes