public void Execute(string updateText)
        {
            // ※下記実装は、本来 static メソッドであるべきですが、このテスト用サンプルは DBConnectionExecutor と比較出来るように、
            // インスタンスとして何らかの処理をすることをイメージしたものとなっています。

            if (string.IsNullOrEmpty(updateText))
            {
                throw new ArgumentException("updateText に Empty 文字、および null 参照 (Visual Basic の場合は Nothing) を指定することは出来ません。", "updateText");
            }

            // DB の接続文字列は、Entity Framework 標準機能により(コンストラクタに何も指定しないことで)App.config から取得して動作します。
            // このクラスの場合、そつ族文字列の名前は UnitTestSampleEntities です。
            using (var db = new UnitTestSampleModelContainer())
            {
                // ※ Text フィールドにインデックスがないと、大量データだととても遅くなりますね。
                var count =
                    (from row in db.SampleTexts
                     where row.Text == updateText
                     select row).Count();

                if (count > 0)
                {
                    throw new ArgumentException("データベースに既に保存されているテキストを更新することは出来ません。別の値を指定してください。", "updateText");
                }

                var newRow = new SampleText()
                {
                    Text = updateText
                };
                db.AddToSampleTexts(newRow);
                db.SaveChanges();
            } // end using (db)
        }     // end sub
Ejemplo n.º 2
0
        /// <summary>
        /// 指定されたテキストを、Environment.EntityConnectionString プロパティで指定された接続で SampleText テーブルに保存します。
        /// ただし、指定されたテキストが既に登録されている時は例外を返します。
        /// </summary>
        /// <param name="updateText"></param>
        public void Execute(string updateText)
        {
            if (string.IsNullOrEmpty(updateText))
            {
                throw new ArgumentException("updateText に Empty 文字、および null 参照 (Visual Basic の場合は Nothing) を指定することは出来ません。", "updateText");
            }
            if (this.Environment == null)
            {
                throw new InvalidOperationException("Environment プロパティが指定されていません。Execute メソッドを実行するまえに、Environment プロパティを指定してください。");
            }
            if (string.IsNullOrWhiteSpace(this.Environment.EntityConnectionString))
            {
                throw new InvalidOperationException("Environment プロパティの EntityConnectionString プロパティが指定されていません。Execute メソッドを実行するまえに、Environment.EntityConnectionString プロパティを指定してください。");
            }

            using (var db = new UnitTestSampleModelContainer(this.Environment.EntityConnectionString))
            {
                // ※ Text フィールドにインデックスがないと、大量データだととても遅くなりますね。
                var count =
                    (from row in db.SampleTexts
                     where row.Text == updateText
                     select row).Count();

                if (count > 0)
                {
                    throw new ArgumentException("データベースに既に保存されているテキストを更新することは出来ません。別の値を指定してください。", "updateText");
                }

                var newRow = new SampleText()
                {
                    Text = updateText
                };
                db.AddToSampleTexts(newRow);
                db.SaveChanges();
            } // end using (db)
        }     // end sub