annotate Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs @ 67:c8099df941bd

Implementando persistencia con NHibernate en el proyecto web
author nelopauselli
date Thu, 19 May 2011 01:24:56 -0300
parents
children c2d98fd6593f
rev   line source
67
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
1 using System;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
2 using AltNetHispano.Agendas.Domain;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
3 using ConfOrm;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
4 using ConfOrm.NH;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
5 using NHibernate;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
6 using NHibernate.Cfg;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
7 using NHibernate.Tool.hbm2ddl;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
8
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
9 namespace Agendas.NHibernate
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
10 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
11 public static class NhHelper
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
12 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
13 private static ISessionFactory _sessionfactory;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
14 private static Configuration _cfg;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
15
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
16 public static Configuration GetConfiguration()
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
17 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
18 if (_cfg == null)
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
19 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
20 var orm = new ObjectRelationalMapper();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
21 orm.TablePerClass<Evento>();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
22 orm.TablePerClass<Ponente>();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
23
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
24 orm.Cascade<Evento, Ponente>(Cascade.None);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
25 orm.Cascade<Ponente, Evento>(Cascade.None);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
26
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
27 var mapper = new Mapper(orm);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
28
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
29 var mapping = mapper.CompileMappingFor(typeof(Evento).Assembly.GetTypes());
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
30
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
31 _cfg = new Configuration();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
32 _cfg.Configure();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
33 _cfg.AddDeserializedMapping(mapping, null);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
34 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
35 return _cfg;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
36 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
37
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
38 public static ISessionFactory GetSessionFactory()
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
39 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
40 if (_sessionfactory == null)
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
41 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
42 var cfg = GetConfiguration();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
43
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
44 #if DEBUG
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
45 var schemaValidator = new SchemaValidator(cfg);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
46 try
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
47 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
48 schemaValidator.Validate();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
49 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
50 catch(Exception ex)
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
51 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
52 var schemaExport = new SchemaExport(cfg);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
53 schemaExport.Create(false, true);
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
54 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
55
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
56 #endif
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
57
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
58 _sessionfactory = cfg.BuildSessionFactory();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
59 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
60 return _sessionfactory;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
61 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
62 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
63 }