Bonsoir à toutes et à tous,
je dois organiser mon app asp.net (C#, postgres) avec NHibernate.
Je commence donc par faire des tuto... déjà ca coince.
1. Je crée un nouveau site web
2. J'ajoute les références NHibernate et Postgres
3. Je configure NHibernate dans mon web.config, ca donne ceci :
4. Je crée une table Users dans ma base de donnée
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 <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.0"> <session-factory name="nhibernate.current_session"> <property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property> <property name="connection.connection_string">Server=localhost;Database=tutriel_NHibernate;User ID=pg_user;Password=pg2stUSs;Encoding=UNICODE</property> <mapping assembly="NHibernateClasses" /> <mapping resource="User.hbm.xml" assembly="NHibernateClasses" /> </session-factory> </hibernate-configuration>
5. Je crée une classe User
6. Je crée un fichier User.hbm.xml pour mapper mon objet User
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
46 namespace NHibernateClasses { public class User { private string id; private string userName; private string password; private string emailAddress; private DateTime lastLogon; public User() { } public string Id { get { return id; } set { id = value; } } public string UserName { get { return userName; } set { userName = value; } } public string Password { get { return password; } set { password = value; } } public string EmailAddress { get { return emailAddress; } set { emailAddress = value; } } public DateTime LastLogon { get { return lastLogon; } set { lastLogon = value; } } } }
7. A ce stade, toutes les étapes du mapping sont réalisées...
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 <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0" assembly="NHibernateClasses" namespace="NHibernateClasses"> > <class name="NHibernateClasses.User" table="users"> <id name="Id" column="LogonId" type="String" length="20"> <generator class="assigned" /> </id> <property name="UserName" column="Name" type="String" length="40"/> <property name="Password" type="String" length="20"/> <property name="EmailAddress" type="String" length="40"/> <property name="LastLogon" type="DateTime"/> </class> </hibernate-mapping>
TEST :
Resultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ISession session = NHibernateHelper.GetCurrentSession(); ITransaction tx = session.BeginTransaction(); User newUser = new User(); newUser.Id = "joe_cool"; newUser.UserName = "Joseph Cool"; newUser.Password = "abc123"; newUser.EmailAddress = "joe@cool.com"; newUser.LastLogon = DateTime.Now; session.Save(newUser); tx.Commit();
exception levée par session.Save(newUser) :
MappingException : Unknow Entity User
Je suis sous VS2005 avec le FrameWork 2.0 la derniere version de NHibernate....
Je me dis que la mapping ne doit pas se faire correctement, j'entend parler de la propriété du fichier XML Build Action = Embedded, elle n'est dispo sous VS2003.
Alors j'ai créé une bibliotheque de classe NHibernateClasses et j'ai mis la classe User et son fichier mapping User.hbm.xml... sans resultat...
J'ai également testé avec un fichier de ressource dans lequel je référence mon fichier User.hbm.xml... sans succè...
Voilà, si quelqu'un à une idée moi je seche...
Merci d'avance
Partager