2017-09-15 3 views
1

Je suis nouveau NHibernate et a essayé quelques tutoriels, mais aucun d'entre eux a contribué à ce problème:NHibernate cherche mal nom

J'ai fait mes correspondances, des classes, ... et quand je suis en train d'ajouter Ma classe à la configuration, Hibernate recherche le mauvais nom de fichier (je suppose que dans le mauvais répertoire).

Ceci est mon hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> 
    </configSections> 
    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
     <property name="connection.connection_string">Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication2-20170915093558.mdf;Initial Catalog=aspnet-WebApplication2-20170915093558;Integrated Security=True</property> 
     <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> 
     <mapping assembly="WebApplication1"/> 
    </session-factory> 
    </hibernate-configuration> 
</configuration> 

Ceci est mon Test -entity:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="WebApplication1" 
        namespace="WebApplication1.Domain"> 

    <class name="Test" table="Test" lazy="false"> 
    <id name="Id"> 
     <generator class="native" /> 
    </id> 
    <property name="Name" /> 
    <property name="DatasetCreationDate" /> 
    </class> 

</hibernate-mapping> 

namespace WebApplication1.Domain 
{ 
    public class Test 
    { 
     public virtual int Id { get; set; } 
     public virtual string Name { get; set; } 
     public virtual DateTime DatasetCreationDate { get; set; } 
    } 
} 

C'est le code que je vous appelle maintenant:

Configuration configuration = new Configuration(); 
configuration.AddAssembly(Assembly.GetCallingAssembly()); 
configuration.AddClass(typeof(Test)); 
configuration.Configure(); 
SessionFactory = configuration.BuildSessionFactory(); 

Sur cette ligne, je reçois erreur suivante par nhibernate:

configuration.AddClass(typeof(Test)); 

ressources non trouvée: WebApplication1.Domain.Test.hbm.xml

Ceci est ma structure:

enter image description here

Toute idée de ce qui va mal ici? Je pense que ma structure de fichiers est également erronée.

+2

Revérifiez tous les fichiers 'hbm.xml' et leur ** Build action ** propriété - être 'ressource incorporée' - https://stackoverflow.com/a/18139805/1679310 –

+0

* Cela a du sens .. nous tous (presque) étions là;) * –

Répondre

2

Je trouve les problèmes moi-même (avec un peu d'aide par Radim Köhler):

1er problème

Les propriétés du .hbm.xml -files

  • Build Action: Embedded Resource .
  • Copie vers le répertoire de sortie: Do not copy

2ème problème

J'ajoutais l'assemblée deux fois.

  • Une fois dans le hibernate.cfg.xml: <mapping assembly="WebApplication1"/>
  • et une fois lors de la construction de l'usine de session: configuration.AddAssembly(Assembly.GetCallingAssembly());

maintenant je supprimé celle du hibernate.cfg.xml