private ISessionFactory CreateSessionFactory(NetworkCredential credential, GlobalPoco.Firma company) { var cfg = CreateConfiguration(credential, company); var sf = cfg.BuildSessionFactory(); return(sf); }
private Configuration CreateConfiguration(NetworkCredential credential, GlobalPoco.Firma company) { var cfg = ConfigurationProvider.CreateConfiguration(credential, company); var userName = credential.UserName == ReadOnlyLogin.UserName ? "U0" : credential.UserName; var listener = new AuditEntityEventListener(userName); cfg.SetListener(ListenerType.PreUpdate, listener); cfg.SetListener(ListenerType.PreInsert, listener); var fluentConfig = Fluently.Configure(cfg) .Mappings(m => { foreach (var mappingAssembly in ConfigurationProvider.MappingAssemblies) { m.FluentMappings.AddFromAssembly(mappingAssembly); } }) .BuildConfiguration(); foreach (var classMapping in fluentConfig.ClassMappings) { classMapping.AddTuplizer(EntityMode.Poco, typeof(NullableTuplizer).AssemblyQualifiedName); } return(fluentConfig); }
/// <summary> /// Erstellt eine <see cref="ISessionFactory"/> für eine Firmendatenbank /// </summary> /// <param name="company">Die Firma für die eine <see cref="ISessionFactory"/> zur Firmendatenbank aufgebaut werden soll</param> /// <param name="credential">Die für den Datenbankzugriff notwendigen Anmeldeinformationen</param> /// <returns>Die neue <see cref="ISessionFactory"/> für den Zugriff auf die Datenbank der <paramref name="company" /></returns> public ISessionFactory GetCompanySessionFactory([NotNull] GlobalPoco.Firma company, [NotNull] NetworkCredential credential) { return(GetSessionFactoryFor(credential, company)); }
private ISessionFactory GetSessionFactoryFor([NotNull] NetworkCredential credential, [CanBeNull] GlobalPoco.Firma company) { if (credential.UserName == ReadOnlyLogin.UserName || company == null) { return(ReadOnlySessionFactory); } var key = new SessionFactoryKey { DbName = company.Owner, UserName = credential.UserName, }; var result = _userSessionFactory.GetOrAdd(key, _ => CreateSessionFactory(credential, company)); return(result); }
/// <inheritdoc/> public virtual Configuration CreateConfiguration(NetworkCredential credential, Firma company) { var cfg = new Configuration(); cfg.SetProperties(new Dictionary<string, string> { { Environment.ConnectionString, GetConnectionString(credential, company) }, { Environment.Dialect, typeof(NHibernate.Dialect.SybaseSQLAnywhere12Dialect).AssemblyQualifiedName }, { Environment.ConnectionDriver, typeof(NHibernate.Driver.SybaseSQLAnywhereDotNet4Driver).AssemblyQualifiedName }, }); foreach (var mappingAssembly in MappingAssemblies) { cfg.AddAssembly(mappingAssembly); } return cfg; }
/// <inheritdoc/> public virtual string GetConnectionString(NetworkCredential credential, Firma company) { var csb = new DbConnectionStringBuilder() { BrowsableConnectionString = true, }; csb.Add("UserID", credential.UserName); csb.Add("Password", credential.Password); csb.Add("DatabaseName", company?.Owner ?? DefaultDatabase); csb.Add("DatabaseFile", GetDatabasePath(company)); csb.Add("ServerName", "lxdbsrv"); csb.Add("CommLinks", $"TCPIP(Host={HostName})"); return csb.ConnectionString; }