J'ai voulu testé NHibernate avec une base MySQL. J'ai regardé le tutoriel de KPixel


Je rencontre deux problèmes :
Si je veux générer les schémas, le AddInputStream me lance l'erreur de MappingException (Could not compile the mapping document: (unknown))
Si je l'utilise pas, il plante sur BuildSessionFactory en disant que la proxyproxyfactory_class n'est pas défini. Si je la définie, il me dit que la dll de la ProxyProxyFactoryClass n'est pas présent dans le répertoire de déployement.


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
47
private ISessionFactory configuration(TypeBase tBase, String chaineDeConnexion)
        {
            XmlConfigurator.Configure();//pour preparer la lecture des logs
 
 
            Configuration cfg = new Configuration();
            cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionProvider, "NHibernate.Connection.DriverConnectionProvider");
 
            switch (tBase)
            {
                case TypeBase.Access:
                    cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.JetDriver.JetDialect, NHibernate.JetDriver");
                    cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.JetDriver.JetDriver, NHibernate.JetDriver");
                    break;
                case TypeBase.MSSQL://verifier dialect
                    cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.MsSql2000Dialect");
                    cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.SqlClientDriver");
                    break;
                case TypeBase.MySQL: 
                    cfg.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.MySQLDialect");
                    cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.MySqlDataDriver");
                    break;
                case TypeBase.Oracle:
                    break;
            }
            cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, chaineDeConnexion);
            cfg.SetProperty(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle");
            //this.schema(cfg);
 
            return cfg.BuildSessionFactory();
        }
 
        private void schema(Configuration cfg)
        {
            // Utilise NHibernate.Mapping.Attributes pour créer les informations sur les entités
            System.IO.MemoryStream flux = new System.IO.MemoryStream(); // Contenant des informations
            NHibernate.Mapping.Attributes.HbmSerializer.Default.Validate = true; // Active la validation (optionnel)
            // Récupère les informations à partir de cette assemblée (peut aussi être fait classe par classe)
            NHibernate.Mapping.Attributes.HbmSerializer.Default.Serialize(flux, System.Reflection.Assembly.GetExecutingAssembly());
            flux.Position = 0;
            cfg.AddInputStream(flux); // Envoi les informations de Mappage à la Configuration de NHibernate
            flux.Close();
 
 
            // Créé le(s) table(s) dans la base de données pour les entités
            new NHibernate.Tool.hbm2ddl.SchemaExport(cfg).Create(true, true);
        }
Mon appli se compose pour le moment d'une application console et de 2 dll (une étant une adaptation à mon projet du tuto) et l'autre un DAO.


Comment je fais pour corriger mes problèmes?

Merci d'avance,

Arsenic68