view Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs @ 96:1eb5a0e531bf

Funcionamiento con cuenta interna y con cuenta de twitter, falta unificar usuarios Estructura de aspnetdb dentro de base de datos de altnet hispano, se debe ejecutar: C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe para crear dicha estructura, de todas formas el objetivo seria tener una tabla de usuario y password interna, no parecería ser necesaria toda la estructura de aspnetdb
author Nelo@Kenia.neluz.int
date Sat, 04 Jun 2011 19:37:02 -0300
parents db4b1e2cae49
children 90ce239cfa6d
line wrap: on
line source

using System;
using AltNetHispano.Agendas.Domain;
using ConfOrm;
using ConfOrm.NH;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;

namespace Agendas.NHibernate
{
	public static class NhHelper
	{
		private static ISessionFactory _sessionfactory;
		private static Configuration _cfg;

		public static Configuration GetConfiguration()
		{
			if (_cfg == null)
			{
				var orm = new ObjectRelationalMapper();
				orm.TablePerClass<Persona>();
				orm.TablePerClass<Evento>();
				orm.TablePerClass<Track>();
				orm.TablePerClass<Cuenta>();

				orm.Cascade<Evento, Persona>(Cascade.None);
				orm.Cascade<Persona, Evento>(Cascade.None);
				
				orm.Cascade<Persona, Cuenta>(Cascade.All);

				var mapper = new Mapper(orm);

				var mapping = mapper.CompileMappingFor(typeof(Evento).Assembly.GetTypes());
				
				_cfg = new Configuration();
				_cfg.Configure();
				_cfg.AddDeserializedMapping(mapping, null);
			}
			return _cfg;
		}

		public static ISessionFactory GetSessionFactory()
		{
			if (_sessionfactory == null)
			{
				var cfg = GetConfiguration();

#if DEBUG
				var schemaValidator = new SchemaValidator(cfg);
				try
				{
					schemaValidator.Validate();
				}
				catch
				{
					try
					{
						var schemaUpdate = new SchemaUpdate(cfg);
						schemaUpdate.Execute(false, true);

						schemaValidator.Validate();
					}
					catch
					{
						var schemaExport = new SchemaExport(cfg);
						schemaExport.Create(false, true);
					}
				}

#endif

				_sessionfactory = cfg.BuildSessionFactory();
			}
			return _sessionfactory;
		}
	}
}