private ISessionFactory BuildSessionFactory() { SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); builder.DataSource = ConfigurationManager.AppSettings["Hostname"]; builder.UserID = ConfigurationManager.AppSettings["Username"]; builder.Password = ConfigurationManager.AppSettings["Password"]; builder.InitialCatalog = ConfigurationManager.AppSettings["DatabaseName"]; var nHibernateConfig = new NHibernate.Cfg.Configuration(); nHibernateConfig.SetProperty(NHibernate.Cfg.Environment.ConnectionString, builder.ToString()); NHibernate.Cfg.Configuration nHibernateConfigFluent = null; NHibernate.ISessionFactory sf = null; var file = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyPhoto", "DB"); if (!System.IO.File.Exists(file)) { DatabaseManager.DropTablesWithoutEventStore(builder.ToString()); nHibernateConfigFluent = Fluently.Configure(nHibernateConfig).Mappings(cfg => { cfg.FluentMappings.AddFromAssemblyOf<IHaveEntities>(); }).ExposeConfiguration(cfg => new NHibernate.Tool.hbm2ddl.SchemaExport(cfg) .Execute(false, true, false)) .BuildConfiguration(); var sessionFactory = nHibernateConfigFluent.BuildSessionFactory(); using (var session = sessionFactory.OpenSession()) { session.BeginTransaction(); byte[] avatarBytes = System.IO.File.ReadAllBytes(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "MyPhoto") + "/defaultavatar.png"); Guid adminId = new Guid("4F59C3B3-D170-4DC9-B402-6A3612D50FEA"); var admin = new MyPhoto.Entities.Entity.User(adminId.ToString(), "admin", "123qwe", "*****@*****.**"); var avatar = new MyPhoto.Entities.Entity.Avatar(MyPhoto.Entities.Entity.Avatar.DefaultAvatarId, avatarBytes, admin, DateTime.Now, "image/png"); session.Save(admin); session.Flush(); session.Save(avatar); admin.Avatar = avatar; admin.IsAdmin = true; session.Transaction.Commit(); } System.IO.File.Create(file); sf = sessionFactory; } else { nHibernateConfigFluent = Fluently.Configure(nHibernateConfig).Mappings(cfg => { cfg.FluentMappings.AddFromAssemblyOf<IHaveEntities>(); }).BuildConfiguration(); sf = nHibernateConfigFluent.BuildSessionFactory(); } return sf; }
public void ClaimsRecieved(UserInfoClaimsReceivedEventArgs args) { //System.Diagnostics.Debugger.Launch(); //email,picture,sub using (var session = sf.OpenSession()) using (var tx = session.BeginTransaction()) { var id = args.Claims.Where(x => x.Type == "sub").First().Value; var email = args.Claims.Where(x => x.Type == "email").First().Value; var image = args.Claims.Where(x => x.Type == "picture").First().Value; var user = session.Query<MyPhoto.Entities.Entity.User>().Where(x => x.Id == id).FirstOrDefault(); if (user == null) { user = new MyPhoto.Entities.Entity.User(id, email, Guid.NewGuid().ToString(), email); var avatar = new MyPhoto.Entities.Entity.Avatar(Guid.NewGuid(), new byte[] { }, user, DateTime.Now, "image/png", image); session.Save(user); session.Flush(); session.Save(avatar); user.Avatar = avatar; } else { user.Avatar.Url = image; user.Email = email; user.Username = email; } Search.AddOrUpdate(user); new SecurityManager(session).GoogleLogin(email); session.Transaction.Commit(); } int i = 0; i++; }