main
 1using System.Data.SqlServerCe;
 2using System.IO;
 3using FluentNHibernate.Cfg;
 4using FluentNHibernate.Cfg.Db;
 5using gorilla.commons.utility;
 6using NHibernate;
 7using NHibernate.ByteCode.Castle;
 8using NHibernate.Cfg;
 9using NHibernate.Tool.hbm2ddl;
10using presentation.windows.server.orm.mappings;
11using Environment = System.Environment;
12
13namespace presentation.windows.server
14{
15    public class NHibernateBootstrapper : Query<ISessionFactory>
16    {
17        string database_path;
18        string connection_string;
19
20        public NHibernateBootstrapper()
21        {
22            database_path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), @"mokhan.ca\momoney\default.sdf");
23            connection_string = string.Format("Data Source='{0}'; Password=;Persist Security Info=True", database_path);
24        }
25
26        public ISessionFactory fetch()
27        {
28            var configuration = new Configuration();
29            return Fluently
30                .Configure(configuration)
31                .Database(MsSqlCeConfiguration.Standard
32                              .ConnectionString(connection_string)
33                              .AdoNetBatchSize(500)
34                              //.ShowSql()
35                              .ProxyFactoryFactory<ProxyFactoryFactory>()
36                )
37                .Mappings(x =>
38                {
39                    x.FluentMappings.AddFromAssemblyOf<MappingAssembly>();
40                })
41                .ExposeConfiguration(x => export(x)).BuildSessionFactory();
42        }
43
44        void export(Configuration configuration)
45        {
46            if (File.Exists(database_path)) File.Delete(database_path);
47            using (var engine = new SqlCeEngine(connection_string))
48            {
49                engine.CreateDatabase();
50            }
51            new SchemaExport(configuration).Execute(true, true, false);
52        }
53    }
54}