protected override void Arrange()
        {
            base.Arrange();
            Builder = new ConfigurationSourceBuilder();

            DataConfig = Builder.ConfigureData();
        }
        protected override void Arrange()
        {
            base.Arrange();

            source = new DesignDictionaryConfigurationSource();

            ConfigurationSourceBuilder sourceBuilder = new ConfigurationSourceBuilder();

            sourceBuilder.ConfigureData().ForDatabaseNamed("connection-string1").ThatIs.ASqlDatabase().WithConnectionString("connectionStringValueXYZ").AsDefault()
            .ForDatabaseNamed("connection-string2").ThatIs.AnOracleDatabase().WithConnectionString("OracleConnectionString").WithPackageNamed("x").AndPrefix("XYZ")
            .ForDatabaseNamed("connection-string3").ThatIs.AnOracleDatabase().WithConnectionString("OracleConnectionString").WithPackageNamed("x").AndPrefix("XYZ");

            sourceBuilder.UpdateConfigurationWithReplace(source);

            DatabaseSettings dbSettings = (DatabaseSettings)source.GetSection(DatabaseSettings.SectionName);

            dbSettings.ProviderMappings.Add(new DbProviderMapping("dbpro1", "dbtype"));
            dbSettings.ProviderMappings.Add(new DbProviderMapping("dbpro2", "dbtype"));

            source.Remove(DatabaseSettings.SectionName);
            source.Add(DatabaseSettings.SectionName, dbSettings);

            var configurationSection     = source.GetSection(DataAccessDesignTime.ConnectionStringSettingsSectionName);
            var configurationSourceModel = Container.Resolve <ConfigurationSourceModel>();

            configurationSourceModel.Load(source);

            databaseSectionViewModel = configurationSourceModel.Sections
                                       .Where(x => x.SectionName == DataAccessDesignTime.ConnectionStringSettingsSectionName)
                                       .Single();
        }
        protected override void Arrange()
        {
            base.Arrange();

            source = new DesignDictionaryConfigurationSource();

            ConfigurationSourceBuilder sourceBuilder = new ConfigurationSourceBuilder();
            sourceBuilder.ConfigureData().ForDatabaseNamed("connection-string1").ThatIs.ASqlDatabase().WithConnectionString("connectionStringValueXYZ").AsDefault()
                .ForDatabaseNamed("connection-string2").ThatIs.AnOracleDatabase().WithConnectionString("OracleConnectionString").WithPackageNamed("x").AndPrefix("XYZ")
                .ForDatabaseNamed("connection-string3").ThatIs.AnOracleDatabase().WithConnectionString("OracleConnectionString").WithPackageNamed("x").AndPrefix("XYZ");

            sourceBuilder.UpdateConfigurationWithReplace(source);

            DatabaseSettings dbSettings = (DatabaseSettings)source.GetSection(DatabaseSettings.SectionName);
            dbSettings.ProviderMappings.Add(new DbProviderMapping("dbpro1", "dbtype"));
            dbSettings.ProviderMappings.Add(new DbProviderMapping("dbpro2", "dbtype"));

            source.Remove(DatabaseSettings.SectionName);
            source.Add(DatabaseSettings.SectionName, dbSettings);

            var configurationSection = source.GetSection(DataAccessDesignTime.ConnectionStringSettingsSectionName);
            var configurationSourceModel = Container.Resolve<ConfigurationSourceModel>();
            configurationSourceModel.Load(source);

            databaseSectionViewModel = configurationSourceModel.Sections
                .Where(x => x.SectionName == DataAccessDesignTime.ConnectionStringSettingsSectionName)
                .Single();
        }
Exemple #4
0
        static void LogWithFluentInterface(CustomLogEntry logEntry)
        {
            var builder = new ConfigurationSourceBuilder();

            builder.ConfigureData()
                .ForDatabaseNamed("Logging")
                    .ThatIs.ASqlDatabase()
                    .WithConnectionString(@"data source=.\SQLEXPRESS;Integrated Security=SSPI;Database=Logging")
                .AsDefault();

            builder.ConfigureLogging()
                    .WithOptions
                        .DoNotRevertImpersonation()
                    .LogToCategoryNamed("General")
                        .WithOptions.SetAsDefaultCategory()
                        .SendTo.CustomDatabase("Custom Database Trace Listener")
                        .WithAddCategoryStoredProcedure("AddCategory")
                        .UseDatabase("Logging")
                        .Filter(System.Diagnostics.SourceLevels.All)
                        .WithWriteLogStoredProcedure("WriteLog")
                        .FormatWithSharedFormatter("Text Formatter")
                    .SpecialSources.LoggingErrorsAndWarningsCategory
                        .SendTo.EventLog("Event Log Listener")
                        .FormatWith(new FormatterBuilder()
                             .TextFormatterNamed("Text Formatter")
                               .UsingTemplate(@"Timestamp: {timestamp}{newline}
            Message: {message}{newline}
            Category: {category}{newline}
            Priority: {priority}{newline}
            EventId: {eventid}{newline}
            Severity: {severity}{newline}
            Title:{title}{newline}
            Machine: {localMachine}{newline}
            App Domain: {localAppDomain}{newline}
            ProcessId: {localProcessId}{newline}
            Process Name: {localProcessName}{newline}
            Thread Name: {threadName}{newline}
            Win32 ThreadId:{win32ThreadId}{newline}
            Extended Properties: {dictionary({key} - {value}{newline})}"))
                            .ToLog("Application")
                            .ToMachine(".")
                            .UsingEventLogSource("Enterprise Library Logging")
                            .Filter(SourceLevels.All)
                            ;

            var configSource = new DictionaryConfigurationSource();
            builder.UpdateConfigurationWithReplace(configSource);

            var dbProviderFactory = new DatabaseProviderFactory(configSource);
            DatabaseFactory.SetDatabaseProviderFactory(dbProviderFactory, false);

            var logWriterFactory = new LogWriterFactory(configSource);
            var logWriter = logWriterFactory.Create();
            logWriter.Write(logEntry);

            // Re-initialize static Logger
            Logger.SetLogWriter(logWriter, false);
            Logger.Write("Test2", "General");
        }
        protected override void Arrange()
        {
            base.Arrange();

            var builder = new ConfigurationSourceBuilder();
            builder.ConfigureData()
                    .ForDatabaseNamed("someDatabase")
                    .AsDefault();

            var source = new DictionaryConfigurationSource();
            builder.UpdateConfigurationWithReplace(source);

            ElementLookup = Container.Resolve<ElementLookup>();
            DatabaseSection = (DatabaseSettings)source.GetSection(DatabaseSettings.SectionName);
        }
        protected override void Arrange()
        {
            base.Arrange();

            var builder = new ConfigurationSourceBuilder();

            builder.ConfigureData()
            .ForDatabaseNamed("someDatabase")
            .AsDefault();

            var source = new DictionaryConfigurationSource();

            builder.UpdateConfigurationWithReplace(source);

            ElementLookup   = Container.Resolve <ElementLookup>();
            DatabaseSection = (DatabaseSettings)source.GetSection(DatabaseSettings.SectionName);
        }
        protected override void Arrange()
        {
            base.Arrange();

            var builder = new ConfigurationSourceBuilder();
            builder.ConfigureData()
                .ForDatabaseNamed("SomeOracleDatabase")
                    .ThatIs.AnOracleDatabase()
                    .WithConnectionString("SomeOracleConnectionString")
                .ForDatabaseNamed("SomeOleDbDatabase")
                    .ThatIs.AnOleDbDatabase()
                    .WithConnectionString("Some OleDb ConnectionString")
                    .AsDefault();

            var source = new DictionaryConfigurationSource();
            builder.UpdateConfigurationWithReplace(source);

            var configSourceModel = Container.Resolve<ConfigurationSourceModel>();
            configSourceModel.AddSection(DatabaseSettings.SectionName, source.GetSection(DatabaseSettings.SectionName));
            ConnectionStringSection = configSourceModel.AddSection("connectionStrings", source.GetSection("connectionStrings"));
        }
        protected override void Arrange()
        {
            base.Arrange();

            var builder = new ConfigurationSourceBuilder();

            builder.ConfigureData()
            .ForDatabaseNamed("SomeOracleDatabase")
            .ThatIs.AnOracleDatabase()
            .WithConnectionString("SomeOracleConnectionString")
            .ForDatabaseNamed("SomeOleDbDatabase")
            .ThatIs.AnOleDbDatabase()
            .WithConnectionString("Some OleDb ConnectionString")
            .AsDefault();

            var source = new DictionaryConfigurationSource();

            builder.UpdateConfigurationWithReplace(source);

            var configSourceModel = Container.Resolve <ConfigurationSourceModel>();

            configSourceModel.AddSection(DatabaseSettings.SectionName, source.GetSection(DatabaseSettings.SectionName));
            ConnectionStringSection = configSourceModel.AddSection("connectionStrings", source.GetSection("connectionStrings"));
        }
Exemple #9
0
        static void Main(string[] args)
        {
            // 単純にSQL文を実行
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                // SQL文を発行してデータを格納
                var people = database.ExecuteSqlStringAccessor <Person>(
                    "SELECT Id, Name, Age FROM PERSON ORDER BY ID DESC");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
            // パラメータつきのSQL文
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                // SQL文を発行してデータを格納
                var accessor = database.CreateSqlStringAccessor <Person>(
                    // パラメータつきのSQL文
                    "SELECT Id, Name, Age FROM PERSON WHERE NAME LIKE @p1 ORDER BY ID DESC",
                    // パラメータのマッピングルール
                    SequenceParameterMapper.Default);
                // パラメータを指定して実行
                var people = accessor.Execute("%mu%");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
            // データの登録
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                // コネクションを作成
                using (var conn = database.CreateConnection())
                {
                    conn.Open();
                    // トランザクションを開始
                    using (var tran = conn.BeginTransaction())
                    {
                        // 登録対象のデータ
                        var p = new Person {
                            Name = "hanami", Age = 100
                        };
                        // コマンドをSQLから作成
                        var command = database.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database.AddInParameter(command, "p1", DbType.String, p.Name);
                        database.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database.ExecuteNonQuery(command, tran);

                        // DB側でふられたIDを取得
                        var newId = database.ExecuteScalar(tran, CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("inserted: {0}, newId: {1}", count, newId);
                        // コミット
                        tran.Commit();
                    }
                    conn.Close();
                }
            }
            // Transaction
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                using (var tc = new TransactionScope())
                {
                    var database1 = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                    Console.WriteLine("最初のdatabaseオブジェクト取得 HashCode: {0}", database1.GetHashCode());
                    for (int i = 0; i < 2; i++)
                    {
                        // 登録対象のデータ
                        var p = new Person {
                            Name = "hanami", Age = 100
                        };
                        // コマンドをSQLから作成
                        var command = database1.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database1.AddInParameter(command, "p1", DbType.String, p.Name);
                        database1.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database1.ExecuteNonQuery(command);

                        // DB側でふられたIDを取得
                        var newId = database1.ExecuteScalar(CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("database1: inserted: {0}, newId: {1}", count, newId);
                    }
                    var database2 = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                    Console.WriteLine("2つ目のdatabaseオブジェクト取得 HashCode: {0}", database2.GetHashCode());
                    for (int i = 0; i < 2; i++)
                    {
                        // 登録対象のデータ
                        var p = new Person {
                            Name = "sakurai", Age = 100
                        };
                        // コマンドをSQLから作成
                        var command = database2.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database2.AddInParameter(command, "p1", DbType.String, p.Name);
                        database2.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database1.ExecuteNonQuery(command);

                        // DB側でふられたIDを取得
                        var newId = database2.ExecuteScalar(CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("database2: inserted: {0}, newId: {1}", count, newId);
                    }
                    tc.Complete();
                }
            }
            // Transaction
            // 例外が出るのでコメントアウト
            //Console.WriteLine("---------------------------------------");
            //{
            //    using (var tc = new TransactionScope())
            //    {
            //        // 単純にTransactionScope内で2つのコネクションを開いて閉じる
            //        var conn1 = new SqlCeConnection(ConfigurationManager.ConnectionStrings["SqlCe"].ConnectionString);
            //        conn1.Open();
            //        conn1.Close();
            //        var conn2 = new SqlCeConnection(ConfigurationManager.ConnectionStrings["SqlCe"].ConnectionString);
            //        conn2.Open();
            //        conn2.Close();
            //    }
            //}
            // データの登録ヘルパーメソッド
            Console.WriteLine("---------------------------------------");
            {
                using (var tc = new TransactionScope())
                {
                    // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                    var database = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                    // 登録対象のデータ
                    var p = new Person {
                        Name = "hanami", Age = 100
                    };
                    // 拡張メソッドを使って登録
                    var count = database.ExecuteUpdate(
                        "INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)",
                        p.Name, p.Age);
                    // DB側で割り振られたIDを取得
                    var newId = (decimal)database.ExecuteScalar(
                        CommandType.Text, "SELECT @@IDENTITY");

                    // 結果を表示
                    Console.WriteLine("inserted: {0}, newId {1}", count, newId);
                    tc.Complete();
                }
            }
            Console.WriteLine("---------------------------------------");
            {
                var builder = new ConfigurationSourceBuilder();
                builder.ConfigureData()
                // 使用する接続文字列を取得
                .ForDatabaseNamed("SqlCe")
                .AsDefault();
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance <Database>();
                // SQL文を発行してデータを格納
                var people = database.ExecuteSqlStringAccessor <Person>(
                    "SELECT Id, Name, Age FROM PERSON ORDER BY ID DESC");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
        }
 public override void Initialize()
 {
     builder            = new ConfigurationSourceBuilder();
     configurationStart = builder.ConfigureData();
 }
Exemple #11
0
        static void Main(string[] args)
        {
            // 単純にSQL文を実行
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                // SQL文を発行してデータを格納
                var people = database.ExecuteSqlStringAccessor<Person>(
                    "SELECT Id, Name, Age FROM PERSON ORDER BY ID DESC");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
            // パラメータつきのSQL文
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                // SQL文を発行してデータを格納
                var accessor = database.CreateSqlStringAccessor<Person>(
                    // パラメータつきのSQL文
                    "SELECT Id, Name, Age FROM PERSON WHERE NAME LIKE @p1 ORDER BY ID DESC",
                    // パラメータのマッピングルール
                    SequenceParameterMapper.Default);
                // パラメータを指定して実行
                var people = accessor.Execute("%mu%");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
            // データの登録
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                // コネクションを作成
                using (var conn = database.CreateConnection())
                {
                    conn.Open();
                    // トランザクションを開始
                    using (var tran = conn.BeginTransaction())
                    {
                        // 登録対象のデータ
                        var p = new Person { Name = "hanami", Age = 100 };
                        // コマンドをSQLから作成
                        var command = database.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database.AddInParameter(command, "p1", DbType.String, p.Name);
                        database.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database.ExecuteNonQuery(command, tran);

                        // DB側でふられたIDを取得
                        var newId = database.ExecuteScalar(tran, CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("inserted: {0}, newId: {1}", count, newId);
                        // コミット
                        tran.Commit();
                    }
                    conn.Close();
                }
            }
            // Transaction
            Console.WriteLine("---------------------------------------");
            {
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                using (var tc = new TransactionScope())
                {
                    var database1 = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                    Console.WriteLine("最初のdatabaseオブジェクト取得 HashCode: {0}", database1.GetHashCode());
                    for (int i = 0; i < 2; i++)
                    {
                        // 登録対象のデータ
                        var p = new Person { Name = "hanami", Age = 100 };
                        // コマンドをSQLから作成
                        var command = database1.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database1.AddInParameter(command, "p1", DbType.String, p.Name);
                        database1.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database1.ExecuteNonQuery(command);

                        // DB側でふられたIDを取得
                        var newId = database1.ExecuteScalar(CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("database1: inserted: {0}, newId: {1}", count, newId);
                    }
                    var database2 = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                    Console.WriteLine("2つ目のdatabaseオブジェクト取得 HashCode: {0}", database2.GetHashCode());
                    for (int i = 0; i < 2; i++)
                    {
                        // 登録対象のデータ
                        var p = new Person { Name = "sakurai", Age = 100 };
                        // コマンドをSQLから作成
                        var command = database2.GetSqlStringCommand("INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)");
                        // パラメータを追加
                        database2.AddInParameter(command, "p1", DbType.String, p.Name);
                        database2.AddInParameter(command, "p2", DbType.Int32, p.Age);
                        // トランザクションを指定してコマンドを実行
                        var count = database1.ExecuteNonQuery(command);

                        // DB側でふられたIDを取得
                        var newId = database2.ExecuteScalar(CommandType.Text, "SELECT @@IDENTITY");
                        // 登録件数と、登録時にふられたIDを表示
                        Console.WriteLine("database2: inserted: {0}, newId: {1}", count, newId);
                    }
                    tc.Complete();
                }
            }
            // Transaction
            // 例外が出るのでコメントアウト
            //Console.WriteLine("---------------------------------------");
            //{
            //    using (var tc = new TransactionScope())
            //    {
            //        // 単純にTransactionScope内で2つのコネクションを開いて閉じる
            //        var conn1 = new SqlCeConnection(ConfigurationManager.ConnectionStrings["SqlCe"].ConnectionString);
            //        conn1.Open();
            //        conn1.Close();
            //        var conn2 = new SqlCeConnection(ConfigurationManager.ConnectionStrings["SqlCe"].ConnectionString);
            //        conn2.Open();
            //        conn2.Close();
            //    }
            //}
            // データの登録ヘルパーメソッド
            Console.WriteLine("---------------------------------------");
            {
                using (var tc = new TransactionScope())
                {
                    // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                    var database = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                    // 登録対象のデータ
                    var p = new Person { Name = "hanami", Age = 100 };
                    // 拡張メソッドを使って登録
                    var count = database.ExecuteUpdate(
                        "INSERT INTO PERSON(NAME, AGE) VALUES(@p1, @p2)",
                        p.Name, p.Age);
                    // DB側で割り振られたIDを取得
                    var newId = (decimal)database.ExecuteScalar(
                        CommandType.Text, "SELECT @@IDENTITY");

                    // 結果を表示
                    Console.WriteLine("inserted: {0}, newId {1}", count, newId);
                    tc.Complete();
                }
            }
            Console.WriteLine("---------------------------------------");
            {
                var builder = new ConfigurationSourceBuilder();
                builder.ConfigureData()
                    // 使用する接続文字列を取得
                    .ForDatabaseNamed("SqlCe")
                    .AsDefault();
                // Enterprise LibraryのコンテナからDatabaseクラスのインスタンスを取得
                var database = EnterpriseLibraryContainer.Current.GetInstance<Database>();
                // SQL文を発行してデータを格納
                var people = database.ExecuteSqlStringAccessor<Person>(
                    "SELECT Id, Name, Age FROM PERSON ORDER BY ID DESC");
                // 結果を表示
                foreach (var p in people)
                {
                    Console.WriteLine("Id: {0}, Name: {1}, Age: {2}", p.Id, p.Name, p.Age);
                }
            }
        }