/// <summary>
        /// レコード更新
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnUpdate_Click(object sender, RoutedEventArgs e)
        {
            LogClear();
            try
            {
                // Dapper+FastCrud
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    foreach (var emp in conn.Find<Entity.Models.Employee>(whereClause: $"department_id<110"))
                    {
                        emp.Name = $"{emp.Name}_{emp.Id}";
                        conn.Update(emp);
                    }
                    var finish = DateTime.Now;
                    Log("FC# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                // Microsoft EntityFramework
                using (var db = new Entity.EFModels.Model1())
                {
                    var start = DateTime.Now;
                    foreach (var emp in from t1 in db.Employees where t1.department_id < 310 select t1)
                    {
                        emp.name = $"{emp.name}_{emp.id}";
                    }
                    db.SaveChanges();
                    var finish = DateTime.Now;
                    Log("EF6# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }
            }
            catch (Exception ex)
            {
                Log(ex.ToString());
            }
        }
        /// <summary>
        /// 日本語での検索
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearch2_Click(object sender, RoutedEventArgs e)
        {
            LogClear();
            try
            {
                int i = 0;
                // Dapper
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    foreach (var emp in conn.Query<Entity.Models.Employee>("select * from employees where name=@Name", new { Name = "山田太郎" }))
                    {
                        if (i++ % 100 == 0) Log("{0}", emp.ToString());
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("Dapper# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                i = 0;
                // Dapper+FastCrud(プレースホルダマッピングを使用)
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    foreach (var emp in conn.Find<Entity.Models.Employee>(whereClause: $"name=@Name", queryParameters: new { Name = "山田太郎" }))
                    {
                        if (i++ % 100 == 0) Log("{0}", emp.ToString());
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("FC1# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                i = 0;
                // Dapper+FastCrud(SQL文字列だけで検索)
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    foreach (var emp in conn.Find<Entity.Models.Employee>(whereClause:$"name=N'山田太郎'")) // SQL Serverでは文字列リテラルの前にNが必要
                    {
                        if (i++ % 100 == 0) Log("{0}", emp.ToString());
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("FC2# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                i = 0;
                // Microsoft EntityFramework
                using (var db = new Entity.EFModels.Model1())
                {
                    var start = DateTime.Now;
                    foreach (var emp in from t1 in db.Employees where t1.name == "山田太郎" select t1)
                    {
                        if (i++ % 100 == 0) Log($"id={emp.id}, name={emp.name}, department_id={emp.department_id}");
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("EF6# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }
            }
            catch (Exception ex)
            {
                Log(ex.ToString());
            }
        }
        /// <summary>
        /// レコード検索
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            LogClear();
            try
            {
                int i = 0;
                // Dapper+FastCrud
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    foreach (var emp in conn.Find<Entity.Models.Employee>(whereClause: $"department_id<120"))
                    {
                        if (i++ % 100 == 0) Log("{0}", emp.ToString());
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("FC# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                i = 0;
                // Microsoft EntityFramework
                using (var db = new Entity.EFModels.Model1())
                {
                    var start = DateTime.Now;
                    foreach (var emp in from t1 in db.Employees where t1.department_id < 310 select t1)
                    {
                        if (i++ % 100 == 0) Log($"id={emp.id}, name={emp.name}, department_id={emp.department_id}");
                    }
                    var finish = DateTime.Now;
                    Log($"count = {i}");
                    Log("EF6# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }
            }
            catch (Exception ex)
            {
                Log(ex.ToString());
            }
        }
        /// <summary>
        /// データ投入ボタン
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInsert_Click(object sender, RoutedEventArgs e)
        {
            LogClear();
            var N = 2000;
            try
            {
                using (var conn = ConnectionManager.GetConnection())
                {
                    Log($"Insert records... (N={N})");
                    var dep1 = new Entity.Models.Department() { ID = 5000, NAME = "営業部" };
                    conn.Insert(dep1);
                    var dep2 = new Entity.Models.Department() { ID = 5001, NAME = "開発部" };
                    conn.Insert(dep2);
                    var dep3 = new Entity.Models.Department() { ID = 6000, NAME = "経理部" };
                    conn.Insert(dep3);

                    var emp1 = new Entity.Models.Employee() { Id = 10, Name = "山田太郎", DepartmentId = 5000 };
                    conn.Insert(emp1);
                    var emp2 = new Entity.Models.Employee() { Id = 11, Name = "山田花子", DepartmentId = 5002 };
                    conn.Insert(emp2);
                    var emp3 = new Entity.Models.Employee() { Id = 12, Name = "田中一郎", DepartmentId = 5000 };
                    conn.Insert(emp3);
                    Log("Success!");
                }

                // Microsoft EntityFramework
                using (var db = new Entity.EFModels.Model1())
                {
                    var start = DateTime.Now;
                    for (var i = 10000; i < 10000+N; i++)
                    {
                        db.Employees.Add(new Entity.EFModels.Employee() { id = i, name = "森山太郎", department_id = i/100 });
                        db.SaveChanges();
                    }
                    var finish = DateTime.Now;
                    Log("EF6# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

                // Dapper+FastCrud
                using (var conn = ConnectionManager.GetConnection())
                {
                    var start = DateTime.Now;
                    for (var i = 30000; i < 30000+N; i++)
                    {
                        var emp1 = new Entity.Models.Employee() { Id = i, Name = "広末直美", DepartmentId = i/100 };
                        conn.Insert(emp1);
                    }
                    var finish = DateTime.Now;
                    Log("FC# start:{0} finish:{1} ({2})", start, finish, finish - start);
                }

            }
            catch (Exception ex)
            {
                Log(ex.ToString());
            }
        }