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.
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
Partager