Bonjour tout le monde,
Je suis sur un casse tête depuis ce matin ><.
Alors j'obtiens 'No persister for' avec le code que je vais vous mettre en-dessous.
Si je mets 'config.AddClass(typeof(Secteur));' , il me dit qu'il ne trouve pas 'BaseDeDonnee.Modele.Mapping.Secteur.hbm.xml'.
donc je suppose que j'ai des erreurs de chemin :/.
pour info, je fais une appli test en C# sous SQL Serveur 2000.
Classe Secteur
Secteur.hbm.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BaseDeDonnee.Modele.Mapping { class Secteur { // propriétés automatiques public virtual int Id { get; set; } public virtual string Code { get; set; } // constructeurs public Secteur() { } // ToString public override string ToString() { return string.Format("Secteur {0}: '{1}'", Id, Code); } } }
App.config
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="BaseDeDonnee.Modele.Mapping" assembly="BaseDeDonnee"> <class name="Secteur" table="SECTEUR"> <id name="Id" column="id_Secteur" type="int"> <generator class="native" /> </id> <property name="Code" column="code"/> </class> </hibernate-mapping>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- sections de configuration --> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> </configSections> <!-- configuration NHibernate --> <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="dialect">NHibernate.Dialect.MsSql2000Dialect</property> <property name="connection.connection_string"> Server="xxxxx";Database=PROJETBOUTIQUE;Uid=User;Pwd=toto; </property> <property name="show_sql">true</property> <!--<mapping resource="BaseDeDonnee.Modele.Mapping.Secteur" file="D:/ASP.NET/BaseDeDonnee/BaseDeDonnee/Modele/Mapping/Secteur.hbm.xml" assembly="BaseDeDonnee"/>--> </session-factory> </hibernate-configuration> </configuration>
Class test
Image dossier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 using System; using NHibernate; using NHibernate.Cfg; using BaseDeDonnee.Modele.Mapping; namespace BaseDeDonnee { class ControleurHibernate { public void test(){ try{ // setup nhibernate configuration Configuration config = new Configuration(); // add our assembly config.AddAssembly(typeof(Secteur).Assembly); Console.WriteLine(typeof(Secteur).Assembly); //config.AddClass(typeof(Secteur)); // setup nhibernate session NHibernate.ISessionFactory sessionFactory = config.BuildSessionFactory(); // ouverture session ISession session = sessionFactory.OpenSession(); // début transaction ITransaction transaction = session.BeginTransaction(); Secteur s = new Secteur(); s.Code = "BEL"; session.Save(s); session.Flush(); transaction.Commit(); session.Close(); sessionFactory.Close(); }catch (Exception ex){ Console.WriteLine("Error :" + ex.Message); } } } }
C'est pas très propre, mais c'est simplement pour des testes .
Alors voilà, j'ai testé plusieurs façons pour ajouter mes classes etc... mais en vain. Comme je l'ai dit, je pense qu'il ne trouve pas les liens des classes XML mapping...
dite moi si c'est une bonne solution de passer par App.config... je n'ai pas essayer un autre moyen.
Enfin merci d'avance .
Partager