2010-08-02 4 views
1

je fais NHibernate depuis plusieurs jours. Mais aujourd'hui, je me suis retrouvé face à un problème frustrant, c'est-à-dire une exception de mappage.NHibernate.MappingException: Aucun Aucun document cartographiés persister trouvé dans l'assemblage

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="IPC.Base.Domains" assembly="IPC"> 
    <class name="MenuItem" table="dbo.COR_MenuItem" default-access="property" default-cascade="save-update" default-lazy="true"> 
    <cache usage="read-only" region="completelyStatic"/> 
    <id name="Id" type="System.Int32"> 
     <generator class="identity" /> 
    </id> 
    <property name="Name" type="System.String" /> 
    <property name="Order" column="DisplayOrder" /> 
    <property name="Key" column="KeyChain" /> 
    <property name="Route" /> 
    <property name="ActionMethod" /> 
    <property name="IsHotlink" /> 
    <many-to-one name="ParentMenuItem" column="ParentMenuItemId" class="MenuItem" cascade="none"/> 
    <bag name="MenuItems" table="dbo.COR_MenuItem" cascade="none"> 
     <cache usage="read-only" region="completelyStatic"/> 
     <key column="ParentMenuItemId" /> 
     <one-to-many class="MenuItem" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

Et j'ai une classe de cartographie comme suit:

using System; 
using System.Collections.Generic; 

namespace IPC.Base.Domain 
{ 
    public partial class MenuItem : PersistentObject 
    { 
     public MenuItem() 
     { 
      MenuItems = new List<MenuItem>(); 
     } 
     public virtual string Name { get; set; } 
     public virtual int? Order { get; set; } 
     public virtual string Key { get; set; } 
     public virtual string Route { get; set; } 
     public virtual string ActionMethod { get; set; } 
     public virtual bool IsHotlink { get; set; } 
     public virtual IList<MenuItem> MenuItems { get; set; } 
     public virtual MenuItem ParentMenuItem { get; set; } 

     /// <summary> 
     /// only to be used from the menu builder app 
     /// </summary> 
     /// <param name="id"></param> 
     public virtual void SetId(int id) 
     { 
      Id = id; 
     } 
    } 
} 

J'ai la configuration suivante NHibernate en cours d'exécution avec l'application. Mais selon mon expérience, il n'y a absolument aucun problème avec nHibernate Config. J'utilise la ligne suivante pour le code pour l'appel de l'objet de session nHibernate au système.

static ISessionFactory CurrentFactory 
     { 
      get 
      { 
       if (factory == null) 
       { 
        Configuration cfg = new Configuration(); 
        if (cfgFile == null) 
         cfg = cfg.Configure(); 
        else 
         cfg = cfg.Configure(cfgFile); 

        factory = cfg.BuildSessionFactory(); 
       } 
       return factory; 
      } 
     } 
     public static ISession Create() 
     { 
      var session = CurrentFactory.OpenSession(); 
      return session; 
     } 

Maintenant! Lorsque j'appelle la ligne de code suivante, j'obtiens:

public virtual T Get(int id) 
     { 
      return Session.Get<T>(id); 
     } 


No persister for: IPC.Base.Domain.MenuItem 
Exception Details: NHibernate.MappingException: No persister for: IPC.Base.Domain.MenuItem 

J'ai déjà activé par le journal nHibernate. Voici les détails de base de journal

00:54:40.011 [4] INFO NHibernate.Cfg.Environment - NHibernate 2.1.0.4000 (2.1.0.4000) 
00:54:40.055 [4] INFO NHibernate.Cfg.Environment - Bytecode provider name : lcg 
00:54:40.057 [4] INFO NHibernate.Cfg.Environment - Using reflection optimizer 
00:54:40.682 [4] DEBUG NHibernate.Cfg.Configuration - dialect=NHibernate.Dialect.MsSql2005Dialect 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - connection.driver_class=NHibernate.Driver.SqlClientDriver 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - connection.connection_string=*********************SQL Connection***************** 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - proxyfactory.factory_class=NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - cache.provider_class=NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - cache.use_query_cache=true 
00:54:40.683 [4] DEBUG NHibernate.Cfg.Configuration - show_sql=true 
00:54:40.684 [4] DEBUG NHibernate.Cfg.Configuration - IPC<-IPC 
00:54:40.685 [4] INFO NHibernate.Cfg.Configuration - Searching for mapped documents in assembly: IPC 
00:54:40.689 [4] WARN NHibernate.Cfg.Configuration - No mapped documents found in assembly: IPC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 
00:54:40.691 [4] INFO NHibernate.Cfg.Configuration - Configured SessionFactory: IPC 
00:54:40.691 [4] DEBUG NHibernate.Cfg.Configuration - properties: System.Collections.Generic.Dictionary`2[System.String,System.String] 
00:54:45.716 [4] INFO NHibernate.Cfg.Configuration - checking mappings queue 
00:54:45.716 [4] INFO NHibernate.Cfg.Configuration - processing one-to-many association mappings 
00:54:45.717 [4] INFO NHibernate.Cfg.Configuration - processing one-to-one association property references 
00:54:45.717 [4] INFO NHibernate.Cfg.Configuration - processing foreign key constraints 
00:54:45.747 [4] INFO NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2005Dialect 

J'ai lu presque tout le poste avec pile! :) et même faire google pour la même chose. Les derniers mots que j'y arrive sont un problème avec le nom de mon assemblée! Je suis sûr qu'il y a un problème avec les étapes que j'ai suivies. Mais toujours à la recherche de ce déclencheur !!!

Merci! En avance !!

Répondre

11

Probablement vous avez oublié de définir vos applications de HBM comme ressource incorporée à la DLL.

+0

Serait bien de décrire comment il est fixé - similaire à la façon dont l'OP a répondu à sa propre question, sauf que la réponse manque encore les étapes réelles - à savoir, Build Action -> Embedded Resource – shanabus

2

Enfin, je résolu le problème! C'est fondamentalement un truc stupide que normalement j'ai tendance à faire et que j'oublie ensuite de le remettre sur scène.

Oui, j'était lié à la question de montage. Rien que quand j'essayais de construire une application de couche de données. Il n'embarrassait pas les fichiers xml à l'intérieur de l'assemblage.

Un correctif pour résoudre le problème allez à votre fichiers * .hbm.xml et faire une option de construction de clic et le changement droit de ce fichier à ressource incorporée.

Alrite!

Merci beaucoup!

+1

Voilà ce que Sly a dit .. –

Questions connexes