using System; using System.Collections; using System.Data.Common; using System.Data.SqlClient; using System.Data.EntityClient; namespace Test05 { class Program { static void Main(string[] args) { // Build an entity connection string from scratch string entityString1 = ConnectionStringBuilder.BuildEntityConnectionString(); Console.WriteLine("\n\n------------------- BUILT ----------------\n"); Console.WriteLine(entityString1); // Load an entity connection string from the app.config string entityString2 = ConnectionStringLoader.LoadEntityConnectionString(); Console.WriteLine("\n\n------------------- LOADED ----------------\n"); Console.WriteLine(entityString2); } } class ConnectionStringBuilder { internal static string BuildEntityConnectionString() { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.Provider = Util.ReadKeyValue("Provider"); entityBuilder.Metadata = Util.ReadKeyValue("Metadata"); entityBuilder.ProviderConnectionString = BuildDbConnectionString(entityBuilder.Provider); return entityBuilder.ToString(); } static string BuildDbConnectionString(string provider) { // We may not know what provider we are dealing with, so let's be generic. DbProviderFactory dbFactory = DbProviderFactories.GetFactory(provider); DbConnectionStringBuilder dbBuilder = dbFactory.CreateConnectionStringBuilder(); // Allow the user to enter value for each keyword foreach (string key in dbBuilder.Keys) { dbBuilder.Add(key, Util.ReadKeyValue(key)); } return dbBuilder.ToString(); } } class ConnectionStringLoader { internal static string LoadEntityConnectionString() { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); entityBuilder.Name = Util.ReadKeyValue("Name"); return entityBuilder.ToString(); } } class Util { internal static string ReadKeyValue(string key) { string value = null; Console.Write("{0}=", key); value = Console.ReadLine(); if (string.IsNullOrEmpty(value)) { value = null; } return value; } } }