Wiki

Clone wiki

Boot.Multitenancy / Connector

Connector class

A simple class to setup databases

Connector class

#!c#

public class Connector
    {
        private string ConnectionString { get; set; }

        /// <summary>
        /// Creates database it if it not exist.
        /// </summary>
        /// <param name="dbType">The database type to use. SqlCe, SqlServer2008 or MySql5</param>
        public Connect(string dbType, string connectionString)
        {
            this.ConnectionString = connectionString;

            switch (dbType)
            {
                case "SqlCe": //Easy because it's local.
                    ConnectSqlCe();
                    break;

                case "SqlServer2008":
                    break;

                case "MySql5":
                    break;
            }
        }

        private void ConnectSqlCe()
        {
            try
            { 
                if (!File.Exists(ExtractPath())) {
                    var db = new SqlCeEngine(ConnectionString);
                    db.CreateDatabase();       
                }
            }
            catch(Exception ex)
            {
                throw new Exception("Ither the path is wrong or the directory is write protected." + "\n " + ex.ToString());
            }
        }


        private string ExtractPath()
        {
            var attachDbFileName = new SqlConnectionStringBuilder(ConnectionString).DataSource;
            return attachDbFileName.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
        }


        /// <summary>
        /// Extracts the full path to database, including databasename.
        /// </summary>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        public string ExtractPath(string connectionString)
        {
            var attachDbFileName = new SqlConnectionStringBuilder(connectionString).DataSource;
            return attachDbFileName.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory").ToString());
        }
    }

Create databases automatically

#!c#
            //In your startupfile before you call Init(). Add code below.
            foreach (var tenant in Host.ConfigCollection)
            {
                var configuration = tenant.Value.Configuration;
                if (tenant.Value.Configuration.AutoPersist == true)
                    new Connector(tenant.Value.Configuration.DbType.ToString(),
                        tenant.Value.Configuration.Connectionstring);
            }

            Host.Init();

Updated