Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. public class NHibernateMultiTenantSessionSource : ISessionSource {
  2. #region Static Members and Constructor.
  3. static readonly object _FactorySyncRoot = new object();
  4. static readonly ConcurrentDictionary<string, ISessionFactory> _SessionFactories = new ConcurrentDictionary<string, ISessionFactory>();
  5. #endregion
  6. readonly IConfigurationReader _configurationManager;
  7. readonly IAccountAccessor _accountAccessor;
  8. readonly string _connectionStringModel;
  9.  
  10. public NHibernateMultiTenantSessionSource(IConfigurationReader configurationManager, IAccountAccessor accountAccessor) {
  11. _configurationManager = configurationManager;
  12. _accountAccessor = accountAccessor;
  13. _connectionStringModel = _configurationManager.GetConnectionString("{Your tenant storage medium connection string template, whatever that is}");
  14. }
  15.  
  16. public ISession CreateSession() {
  17. var account = _accountAccessor.GetCurrentAccount();
  18. return account != null ? GetSessionFactory(account).OpenSession() : null;
  19. }
  20.  
  21. private ISessionFactory GetSessionFactory(Account account) {
  22. ISessionFactory accountSessionFactory;
  23. lock (_FactorySyncRoot) {
  24. if (_SessionFactories.TryGetValue(account.GUID, out accountSessionFactory)) {
  25. return accountSessionFactory;
  26. }
  27.  
  28. var cfg = BuildConfiguration(account);
  29. accountSessionFactory = cfg.BuildSessionFactory();
  30. _SessionFactories.TryAdd(account.GUID, accountSessionFactory);
  31. return accountSessionFactory;
  32. }
  33. }
  34.  
  35. private Configuration BuildConfiguration(Account account) {
  36. // build up whatever you need here to connect to your store of choice
  37. return config;
  38. }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement