/// <summary> /// Creates a named database instance from the data configuration types /// </summary> /// <param name="instanceName">The instance name to use for the database</param> /// <param name="connectionData">The connection string data</param> /// <param name="providerData">The type provider data</param> /// <returns>An initialized database provider</returns> public static Database CreateDatabase(string instanceName, ConnectionStringData connectionData, DatabaseTypeData providerData) { ArgumentValidation.CheckForEmptyString(instanceName, "Instance Name"); ArgumentValidation.CheckForNullReference(connectionData, "Connection Data"); ArgumentValidation.CheckForNullReference(providerData, "Provider Data"); DatabaseSettings settings = new DatabaseSettings(); // Setup the provider and connection string data settings.DatabaseTypes.Add(providerData); settings.ConnectionStrings.Add(connectionData); // The instance data binds the provider and connection string together InstanceData instanceData = new InstanceData(); instanceData.ConnectionString = connectionData.Name; instanceData.DatabaseTypeName = providerData.Name; instanceData.Name = instanceName; // setup your instanceData settings.Instances.Add(instanceData); // Setup a data dictionary ConfigurationDictionary configDictionary = new ConfigurationDictionary(); configDictionary.Add(_configName, settings); ConfigurationContext context = ConfigurationManager.CreateContext(configDictionary); return(new DatabaseProviderFactory(context).CreateDatabase(instanceName)); }
/// <summary> /// Takes a connection string and breaks it down into its component name/value pairs, then loads the pairs /// into a <see cref="ConnectionStringData"/> object. /// </summary> /// <param name="connectionStringData">The data object to be loaded from the connectString</param> /// <param name="connectString">The connection string</param> /// <remarks> /// No attempt is made to validate the connection string nor any of its contents. If the string cannot be parsed /// an exception will be thrown. /// </remarks> internal static void BuildConnectionStringDataFromConnectString(ConnectionStringData connectionStringData, string connectString) { ArgumentValidation.CheckForNullReference(connectionStringData, "Connection String Data"); ArgumentValidation.CheckForEmptyString(connectString, "Connect String"); string[] items = connectString.Split(';'); foreach (string item in items) { if (item.Length > 0) { string[] parms = item.Split('='); connectionStringData.Parameters.Add(new ParameterData(parms[0], parms[1])); } } }