annotate Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs @ 200:5346c0500594 deploy pre 1.0

Pasando a estructura de db fija, ya no se crea automáticamente. Se comenta lo referente a Patrocinadores que queda para alguna futura versión. Script para tablas de v1.0
author nelopauselli
date Wed, 17 Aug 2011 17:54:45 -0300
parents 5a1f7233aa5a
children f23ee59ef1bd
rev   line source
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
1 using System;
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
2 using AltNetHispano.Agendas.Domain;
67
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;
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
7 using NHibernate.Cfg.MappingSchema;
67
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
8 using NHibernate.Tool.hbm2ddl;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
9
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
10 namespace Agendas.NHibernate
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
11 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
12 public static class NhHelper
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
13 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
14 private static ISessionFactory _sessionfactory;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
15 private static Configuration _cfg;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
16
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
17 public static Configuration GetConfiguration()
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
18 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
19 if (_cfg == null)
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
20 {
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
21 var mapping = GetMapping();
67
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
22
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
23 _cfg = new Configuration();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
24 _cfg.Configure();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
25 _cfg.AddDeserializedMapping(mapping, null);
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 return _cfg;
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
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
30 public static HbmMapping GetMapping()
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
31 {
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
32 var orm = new ObjectRelationalMapper();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
33 orm.TablePerClass<Persona>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
34 orm.TablePerClass<Evento>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
35
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
36 orm.Complex<Evento>(e => e.Estado);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
37
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
38 orm.TablePerClass<Track>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
39 orm.TablePerClass<TrackLog>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
40 orm.TablePerClass<Cuenta>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
41 //orm.TablePerClass<Patrocinador>();
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
42
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
43 orm.Cascade<Evento, Persona>(Cascade.None);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
44 orm.Cascade<Persona, Evento>(Cascade.None);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
45
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
46 orm.Cascade<Persona, Cuenta>(Cascade.All | Cascade.DeleteOrphans);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
47
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
48 orm.Bag<Persona>(p => p.Roles);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
49
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
50 var mapper = new Mapper(orm);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
51
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
52 mapper.Customize<Persona>(a => a.Property(p => p.Nombre, m => m.Unique(true)));
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
53 mapper.Customize<Persona>(a => a.Property(p => p.Twitter, m => m.Unique(true)));
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
54
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
55 mapper.Class<Persona>(
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
56 ca => ca.Bag(
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
57 p => p.Roles,
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
58 cm => cm.Key(em => em.Column("Persona")),
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
59 m => m.Element(em => em.Column("Rol"))));
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
60
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
61 mapper.Customize<Evento>(a => a.Property(p => p.Titulo, m => m.Unique(true)));
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
62
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
63 mapper.AddPropertyPattern(p => p.DeclaringType == typeof(Evento) && p.Name == "Estado", a => a.Type<EventoStateType>());
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
64
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
65 return mapper.CompileMappingFor(typeof(Evento).Assembly.GetTypes());
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
66
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
67 }
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
68
67
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
69 public static ISessionFactory GetSessionFactory()
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
70 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
71 if (_sessionfactory == null)
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
72 {
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
73 var cfg = GetConfiguration();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
74
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
75 #if DEBUG
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
76 var schemaValidator = new SchemaValidator(cfg);
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 147
diff changeset
77 schemaValidator.Validate();
67
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
78 #endif
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
79
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
80 _sessionfactory = cfg.BuildSessionFactory();
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
81 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
82 return _sessionfactory;
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
83 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
84 }
c8099df941bd Implementando persistencia con NHibernate en el proyecto web
nelopauselli
parents:
diff changeset
85 }