Wiki
Clone wikiBoot.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