예제 #1
0
        static void Main(string[] args)
        {
            using (var context = new KendoGridDbContext())
            {
                var found1 = context.Employees.FirstOrDefault($"EmployeeNumber > 1000");
                Console.WriteLine($"found1 : {found1.Id} - {found1.EmployeeNumber}");

                var found2 = context.Employees.FirstOrDefault($"EmployeeNumber > @0", 1001);
                Console.WriteLine($"found2 : {found2.Id} - {found2.EmployeeNumber}");

                int em     = 1002;
                var found3 = context.Employees.FirstOrDefault($"EmployeeNumber > @0", em);
                Console.WriteLine($"found3 : {found3.Id} - {found3.EmployeeNumber}");

                string search   = "2";
                var    expected = context.Employees.Where(e => System.Data.Entity.SqlServer.SqlFunctions.StringConvert((double)e.EmployeeNumber).Contains(search)).ToArray();
                foreach (var emp in expected)
                {
                    Console.WriteLine($"System.Linq : {emp.Id} - {emp.EmployeeNumber}");
                }

                var test = context.Employees.Where("SqlFunctions.StringConvert(double(it.EmployeeNumber)).Contains(@0)", search).ToArray();
                foreach (var emp in test)
                {
                    Console.WriteLine($"DynamicLinq : {emp.Id} - {emp.EmployeeNumber}");
                }

                Console.WriteLine(new string('-', 80));
                int x               = 1002;
                int seven           = 7;
                var testNonOptimize = context.Employees.Where(e => e.EmployeeNumber > 1000 && e.EmployeeNumber < x && 7 == seven);
                Console.WriteLine($"testNonOptimize {testNonOptimize}");
                foreach (var emp in testNonOptimize)
                {
                    Console.WriteLine($"testNonOptimize: {emp.Id} - {emp.EmployeeNumber}");
                }

                var testNonOptimizeDynamic = context.Employees.Where("EmployeeNumber > 1000 && EmployeeNumber < @0 and 7 == @1 and \"2\" == @2", x, seven, search);
                Console.WriteLine($"testNonOptimizeDynamic {testNonOptimizeDynamic}");
                foreach (var emp in testNonOptimizeDynamic)
                {
                    Console.WriteLine($"testNonOptimizeDynamic: {emp.Id} - {emp.EmployeeNumber}");
                }

                Console.WriteLine("Enable ExpressionOptimizer.visit");
                ExtensibilityPoint.QueryOptimizer = ExpressionOptimizer.visit;

                //var testOptimize1 = context.Employees.Where(e => e.EmployeeNumber > 1000 && e.EmployeeNumber < x && 7 == seven);
                //var expression1 = ExpressionOptimizer.visit(testOptimize1.Expression);
                //Console.WriteLine(expression1);

                var testOptimizeDynamic = context.Employees.Where("EmployeeNumber > 1000 && EmployeeNumber < @0 and 7 == @1 and \"2\" == @2", x, seven, search);
                Console.WriteLine($"testOptimizeDynamic : {testOptimizeDynamic}");
                foreach (var emp in testOptimizeDynamic)
                {
                    Console.WriteLine($"testOptimizeDynamic: {emp.Id} - {emp.EmployeeNumber}");
                }
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            var connection = DbConnectionFactory.CreateTransient();

            using (var context = new KendoGridDbContext(connection))
            {
                context.KendoGridCountry.Add(new Country {
                    Id = 1000, Code = "NL", Name = "Nederland"
                });

                var main1 = new MainCompany {
                    Name = "Main1"
                };
                context.KendoGridMainCompany.Add(main1);

                var main2 = new MainCompany {
                    Name = "Main2"
                };
                context.KendoGridMainCompany.Add(main2);

                var company = new Company {
                    Name = "Other", MainCompany = main1
                };
                context.KendoGridCompany.Add(company);

                context.SaveChanges();
            }

            using (var context = new KendoGridDbContext(connection))
            {
                foreach (var c in context.KendoGridCountry.AsNoTracking().Where(c => c.Code.StartsWith("N")))
                {
                    Console.WriteLine(JsonConvert.SerializeObject(c, Formatting.Indented));
                }

                var main2Id = context.KendoGridMainCompany.First(mc => mc.Name == "Main2").Id;

                var company = context.KendoGridCompany.First();
                company.MainCompanyId = main2Id;

                context.SaveChanges();
            }

            using (var context = new KendoGridDbContext(connection))
            {
                foreach (var c in context.KendoGridCompany.AsNoTracking())
                {
                    Console.WriteLine(c.Name + " " + c.MainCompany.Name);
                }
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            using (var context = new KendoGridDbContext())
            {
                string search   = "2";
                var    expected = context.Employees.Where(e => System.Data.Entity.SqlServer.SqlFunctions.StringConvert((double)e.EmployeeNumber).Contains(search)).ToArray();
                foreach (var emp in expected)
                {
                    Console.WriteLine($"System.Linq : {emp.Id} - {emp.EmployeeNumber}");
                }

                var test = context.Employees.Where("SqlFunctions.StringConvert(double(it.EmployeeNumber)).Contains(@0)", search).ToArray();
                foreach (var emp in test)
                {
                    Console.WriteLine($"DynamicLinq : {emp.Id} - {emp.EmployeeNumber}");
                }
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            var all = new
            {
                test1 = new List <int> {
                    1, 2, 3
                }.ToDynamicList(typeof(int)),
                test2 = new List <dynamic> {
                    4, 5, 6
                }.ToDynamicList(typeof(int)),
                test3 = new List <object> {
                    7, 8, 9
                }.ToDynamicList(typeof(int))
            };

            Console.WriteLine("all {0}", JsonConvert.SerializeObject(all, Formatting.Indented));
            using (var context = new KendoGridDbContext())
            {
                string search   = "2";
                var    expected = context.Employees.Where(e => System.Data.Entity.SqlServer.SqlFunctions.StringConvert((double)e.EmployeeNumber).Contains(search)).ToArray();
                foreach (var emp in expected)
                {
                    Console.WriteLine($"System.Linq : {emp.Id} - {emp.EmployeeNumber}");
                }

                var test = context.Employees.Where("SqlFunctions.StringConvert(double(it.EmployeeNumber)).Contains(@0)", search).ToArray();
                foreach (var emp in test)
                {
                    Console.WriteLine($"DynamicLinq : {emp.Id} - {emp.EmployeeNumber}");
                }

                Console.WriteLine(new String('-', 80));
                int x               = 1002;
                int seven           = 7;
                var testNonOptimize = context.Employees.Where(e => e.EmployeeNumber > 1000 && e.EmployeeNumber < x && 7 == seven);
                Console.WriteLine($"testNonOptimize {testNonOptimize}");
                foreach (var emp in testNonOptimize)
                {
                    Console.WriteLine($"testNonOptimize: {emp.Id} - {emp.EmployeeNumber}");
                }

                var testNonOptimizeDynamic = context.Employees.Where("EmployeeNumber > 1000 && EmployeeNumber < @0 and 7 == @1 and \"2\" == @2", x, seven, search);
                Console.WriteLine($"testNonOptimizeDynamic {testNonOptimizeDynamic}");
                foreach (var emp in testNonOptimizeDynamic)
                {
                    Console.WriteLine($"testNonOptimizeDynamic: {emp.Id} - {emp.EmployeeNumber}");
                }

                Console.WriteLine("Enable ExpressionOptimizer.visit");
                ExtensibilityPoint.QueryOptimizer = ExpressionOptimizer.visit;

                //var testOptimize1 = context.Employees.Where(e => e.EmployeeNumber > 1000 && e.EmployeeNumber < x && 7 == seven);
                //var expression1 = ExpressionOptimizer.visit(testOptimize1.Expression);
                //Console.WriteLine(expression1);

                var testOptimizeDynamic = context.Employees.Where("EmployeeNumber > 1000 && EmployeeNumber < @0 and 7 == @1 and \"2\" == @2", x, seven, search);
                Console.WriteLine($"testOptimizeDynamic : {testOptimizeDynamic}");
                foreach (var emp in testOptimizeDynamic)
                {
                    Console.WriteLine($"testOptimizeDynamic: {emp.Id} - {emp.EmployeeNumber}");
                }
            }
        }