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}