Example #1
0
        public void Update()
        {
            var person = EntityProxyGenerator.CreateProxy <Person>();

            person.Name       = "test";
            person.Age        = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = true;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                int id = session.GetIndentifer <int>();

                // Find 方法返回的对象都是原始对象而非代理对象
                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Console.WriteLine(SqlCmd.Current.Sql);

                // 根据原始对象创建代理对象
                person = person.ToEntityProxy <Person>();

                person.Name  = "test01";
                person.Age   = 31;
                person.Money = 200;

                i = session.Update(person);

                Console.WriteLine(SqlCmd.Current.Sql);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Console.WriteLine(SqlCmd.Current.Sql);

                Assert.AreEqual(1, i);
                Assert.AreEqual("test01", person.Name);
                Assert.AreEqual(31, person.Age.Value);
                Assert.AreEqual(200, person.Money.Value);

                person = EntityProxyGenerator.CreateProxy <Person>();

                person.Name       = "test";
                person.Age        = 20;
                person.Money      = 100;
                person.CreateTime = DateTime.Now;
                person.IsActive   = true;

                i = session.Update <Person>().Set(person).Where(s => s.Id == id).Execute();

                Console.WriteLine(SqlCmd.Current.Sql);

                Assert.AreEqual(1, i);
                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);
            }
        }
Example #2
0
        public void ExecuteDataPage()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int id = 0;

                for (int i = 0; i < 20; i++)
                {
                    // 新增时,对象务必使用 EntityProxyGenerator 创建实体代理,否则无法跟踪属性变化
                    var person = EntityHelper.CreateProxy <Person>();

                    person.Name = "test";
                    //person.Age = 20;
                    person.Money      = 100;
                    person.CreateTime = DateTime.Now;
                    person.IsActive   = false;

                    session.Insert(person);

                    id = session.GetIndentifer <int>();
                }

                string sql = "select * from Person where Id <= ? and CreateTime < ?";

                var dataPage = session.ExecuteDataPage(sql, 1, 20, "CreateTime desc", id, DateTime.Now);

                Assert.AreEqual(20, dataPage.Data.Rows.Count);
            }
        }
Example #3
0
        public void Insert100KRecords()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                Stopwatch watch = new Stopwatch();

                watch.Start();

                for (int i = 0; i < 10000; i++)
                {
                    var person = EntityHelper.CreateProxy <Person>();

                    person.Name       = "test";
                    person.Age        = 20;
                    person.Money      = 100;
                    person.CreateTime = DateTime.Now;
                    person.IsActive   = false;

                    session.Insert(person);
                }

                watch.Stop();

                Console.WriteLine(watch.Elapsed);

                int count = session.Find <Person>().Count();

                Assert.AreEqual(10000, count);
            }
        }
Example #4
0
        public void Clear()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                session.Delete <Person>().Execute();

                var queryable = session.Find <Person>().Count();

                Assert.AreEqual(0, queryable);
            }
        }
Example #5
0
        public void ExecuteScalar()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                string sql = "select count(*) from Person where Id = ? and CreateTime < ?";

                int count = session.ExecuteScalar <int>(sql, 500, DateTime.Now);

                Assert.AreEqual(1, count);
            }
        }
Example #6
0
        public void Test()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                var persons = from s in  session.Find <Person>()
                              select new Person()
                {
                    Id = s.Id, Name = s.Name, Age = s.Age
                };

                persons.ToList();
            }
        }
Example #7
0
        public void Delete()
        {
            var person = EntityHelper.CreateProxy <Person>();

            string id = Guid.NewGuid().ToString();

            person.Id         = id;
            person.Name       = "test";
            person.Age        = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = 0;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                i = session.Delete(person);

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                var queryable = session.Find <Person>().Where(s => s.Id == id);

                Assert.AreEqual(1, i);
                Assert.AreEqual(0, queryable.Count());

                person = EntityHelper.CreateProxy <Person>();

                id = Guid.NewGuid().ToString();

                person.Id         = id;
                person.Name       = "test";
                person.Age        = 20;
                person.Money      = 100;
                person.CreateTime = DateTime.Now;
                person.IsActive   = 1;

                i = session.Insert(person);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                i = session.Delete <Person>().Where(s => s.Id == id).Execute();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual(1, i);
                Assert.AreEqual(0, queryable.Count());
            }
        }
Example #8
0
        public void Delete()
        {
            var person = EntityProxyGenerator.CreateProxy <Person>();

            person.Name       = "test";
            person.Age        = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = true;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                int id = session.GetIndentifer <int>();

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                i = session.Delete(person);

                Console.WriteLine(SqlCmd.Current.Sql);

                var queryable = session.Find <Person>().Where(s => s.Id == id);

                Assert.AreEqual(1, i);
                Assert.AreEqual(0, queryable.Count());

                person = EntityProxyGenerator.CreateProxy <Person>();

                person.Name       = "test";
                person.Age        = 20;
                person.Money      = 100;
                person.CreateTime = DateTime.Now;
                person.IsActive   = true;

                i = session.Insert(person);

                id = session.GetIndentifer <int>();

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                i = session.Delete <Person>().Where(s => s.Id == id).Execute();

                Console.WriteLine(SqlCmd.Current.Sql);

                Assert.AreEqual(1, i);
                Assert.AreEqual(0, queryable.Count());
            }
        }
Example #9
0
        public void Insert()
        {
            // 新增时,对象务必使用 EntityHelper 创建实体代理,否则无法跟踪属性变化
            var person = EntityHelper.CreateProxy <Person>();

            person.Name = "test";
            //person.Age = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = false;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                // 直接插入实体
                int i = session.Insert(person);

                // 输出生成的SQL语句
                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                int id = session.GetIndentifer <int>();

                Assert.AreEqual(1, i);
                Assert.Greater(id, 0);

                // Lambda 表达式插入
                i = session.Insert <Person>()
                    .Set(s => s.Name, "test")
                    .Set(s => s.Age, 20)
                    .Set(s => s.Money, 200)
                    .Set(s => s.CreateTime, DateTime.Now)
                    .Set(s => s.IsActive, true)
                    .Execute();

                // 输出生成的SQL语句
                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                id = session.GetIndentifer <int>();

                Assert.AreEqual(1, i);
                Assert.Greater(id, 0);
            }
        }
Example #10
0
        public void Insert()
        {
            // 新增时,对象务必使用 EntityProxyGenerator 创建实体代理,否则无法跟踪属性变化
            var person = EntityHelper.CreateProxy <Person>();

            string id = Guid.NewGuid().ToString();

            person.Id   = id;
            person.Name = "test";
            //person.Age = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = 0;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                // 输出生成的SQL语句
                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual(1, i);

                i = session.Insert <Person>()
                    .Set(s => s.Id, Guid.NewGuid().ToString())
                    .Set(s => s.Name, "test")
                    .Set(s => s.Age, 20)
                    .Set(s => s.Money, 200)
                    .Set(s => s.CreateTime, DateTime.Now)
                    .Set(s => s.IsActive, 1)
                    .Execute();

                // 输出生成的SQL语句
                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual(1, i);
            }
        }
Example #11
0
        public void Update100KRecords()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                Stopwatch watch = new Stopwatch();

                watch.Start();

                for (int i = 0; i < 100000; i++)
                {
                    var person = EntityHelper.CreateProxy <Person>();

                    person.Name       = "test";
                    person.CreateTime = DateTime.Now;
                    person.IsActive   = false;

                    session.Update(person);
                }

                watch.Stop();
                Console.WriteLine(watch.Elapsed);
            }
        }
Example #12
0
        public void Insert()
        {
            // 新增时,对象务必使用 EntityProxyGenerator 创建实体代理,否则无法跟踪属性变化
            var person = EntityProxyGenerator.CreateProxy <Person>();

            person.Name = "test";
            //person.Age = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = false;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                // 输出生成的SQL语句
                Console.WriteLine(SqlCmd.Current.Sql);

                int id = session.GetIndentifer <int>();

                Assert.AreEqual(1, i);
                Assert.Greater(id, 0);
            }
        }
Example #13
0
        public void Find100KRecords()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                Stopwatch watch = new Stopwatch();

                for (int i = 0; i < 10; i++)
                {
                    watch.Start();

                    var queryable = session.Find <Person>();

                    var list = queryable.ToList();

                    watch.Stop();

                    Console.WriteLine(watch.Elapsed);

                    watch.Reset();

                    Assert.LessOrEqual(10000, list.Count);
                }
            }
        }
Example #14
0
        public void ExecuteScalar()
        {
            // 新增时,对象务必使用 EntityProxyGenerator 创建实体代理,否则无法跟踪属性变化
            var person = EntityHelper.CreateProxy <Person>();

            person.Name = "test";
            //person.Age = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = false;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                session.Insert(person);

                int id = session.GetIndentifer <int>();

                string sql = "select count(*) from Person where Id = ? and CreateTime <= ?";

                int count = session.ExecuteScalar <int>(sql, id, DateTime.Now.AddSeconds(1));

                Assert.AreEqual(1, count);
            }
        }
Example #15
0
        public void Find()
        {
            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                var person = new Person()
                {
                    Name = "test", Age = 20, Money = 100, CreateTime = DateTime.Now, IsActive = true
                };

                session.Insert(person);

                int id = session.GetIndentifer <int>();

                var queryable = session.Find <Person>().Where(s => s.Id == id);

                // 测试 Single 函数
                person = queryable.Single();

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 SingleOrDefault 函数
                person = queryable.SingleOrDefault();

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 First 函数
                person = queryable.First();

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 FirstOrDefault 函数
                person = queryable.FirstOrDefault();

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 Count 函数
                Assert.AreEqual(1, queryable.Count());

                // 测试 ToList 函数
                var list = queryable.ToList();

                Assert.AreEqual(1, list.Count());

                // 测试包含多个 Where 条件
                queryable = session.Find <Person>()
                            .Where(s => s.Id == id)
                            .Where(s => s.Name == "test")
                            .Where(s => s.Age == 20 && s.IsActive == true);

                Assert.AreEqual(1, queryable.Count());

                Console.WriteLine(SqlCmd.Current.Sql);
            }
        }
Example #16
0
        public void Find()
        {
            var person = EntityHelper.CreateProxy <Person>();

            person.Name       = "test";
            person.Age        = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = true;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                session.Insert(person);

                int id = session.GetIndentifer <int>();

                var queryable = session.Find <Person>().Where(s => s.Id == id);

                // 测试 Single 函数
                person = queryable.Single();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 SingleOrDefault 函数
                person = queryable.SingleOrDefault();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 First 函数
                person = queryable.First();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 FirstOrDefault 函数
                person = queryable.FirstOrDefault();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual("test", person.Name);
                Assert.AreEqual(20, person.Age.Value);
                Assert.AreEqual(100, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);

                // 测试 Count 函数
                Assert.AreEqual(1, queryable.Count());

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                // 测试 ToList 函数
                var list = queryable.ToList();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual(1, list.Count());

                // 测试包含多个 Where 条件
                queryable = session.Find <Person>()
                            .Where(s => s.Id == id)
                            .Where(s => s.Name.Contains("test"))
                            .OrderBy(s => s.CreateTime)
                            .OrderBy(s => s.Name)
                            .Skip(0).Take(1);

                Assert.AreEqual(1, queryable.Count());

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);
            }
        }
Example #17
0
        public void Update()
        {
            var person = EntityHelper.CreateProxy <Person>();

            person.Name       = "test";
            person.Age        = 20;
            person.Money      = 100;
            person.CreateTime = DateTime.Now;
            person.IsActive   = true;

            using (ISession session = SessionFactory.CreateDefaultSession())
            {
                int i = session.Insert(person);

                int id = session.GetIndentifer <int>();

                // Find 方法返回的对象都是原始对象而非代理对象
                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                // 根据原始对象创建代理对象
                person = person.ToEntityProxy();

                person.Name  = "test01";
                person.Age   = 31;
                person.Money = 200;

                i = session.Update(person);

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                Assert.AreEqual(1, i);
                Assert.AreEqual("test01", person.Name);
                Assert.AreEqual(31, person.Age.Value);
                Assert.AreEqual(200, person.Money.Value);

                person = EntityHelper.CreateProxy <Person>();

                person.Name       = "test02";
                person.Age        = 22;
                person.Money      = 101;
                person.CreateTime = DateTime.Now;
                person.IsActive   = false;

                i = session.Update <Person>()
                    .Set(person)
                    .Where(s => s.Id == id)
                    .Execute();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Assert.AreEqual(1, i);
                Assert.AreEqual("test02", person.Name);
                Assert.AreEqual(22, person.Age.Value);
                Assert.AreEqual(101, person.Money.Value);
                Assert.AreEqual(false, person.IsActive);

                i = session.Update <Person>().Set(s => s.Name, "test03")
                    .Set(s => s.Age, 23)
                    .Set(s => s.Money, 102)
                    .Set(s => s.CreateTime, DateTime.Now)
                    .Set(s => s.IsActive, true)
                    .Where(s => s.Id == id)
                    .Execute();

                Console.WriteLine(session.Provider.ExecutedCommandBuilder);

                person = session.Find <Person>().Where(s => s.Id == id).Single();

                Assert.AreEqual(1, i);
                Assert.AreEqual("test03", person.Name);
                Assert.AreEqual(23, person.Age.Value);
                Assert.AreEqual(102, person.Money.Value);
                Assert.AreEqual(true, person.IsActive);
            }
        }