Пример #1
0
        public static void GenerateData()
        {
            using (var context = new ModelAndContext.EntityContext())
            {
                context.Blogs.Add(new Blog()
                {
                    Title = "Blog_A", IsSoftDeleted = true
                });
                context.Blogs.Add(new Blog()
                {
                    Title = "Blog_B", IsSoftDeleted = true
                });

                context.SaveChanges();

                context.Posts.Add(new Post()
                {
                    Content = "Post 1 in Blog_A", Date = DateTime.Now.AddDays(-4), IsSoftDeleted = false, Price = 35, BlogId = 1
                });
                context.Posts.Add(new Post()
                {
                    Content = "Post 2 in Blog_A", Date = DateTime.Now.AddDays(-4), IsSoftDeleted = true, Price = 22, BlogId = 1
                });
                context.Posts.Add(new Post()
                {
                    Content = "Post 1 in Blog_B", Date = DateTime.Now.AddDays(-5), IsSoftDeleted = false, Price = 37, BlogId = 2
                });
                context.Posts.Add(new Post()
                {
                    Content = "Post 2 in Blog_B", Date = DateTime.Now.AddDays(-5), IsSoftDeleted = false, Price = 7, BlogId = 2
                });

                context.SaveChanges();

                context.Comments.Add(new Comment()
                {
                    Text = "Comment 1 in post 1", IsSoftDeleted = false, PostId = 1
                });
                context.Comments.Add(new Comment()
                {
                    Text = "Comment 2 in post 1", IsSoftDeleted = false, PostId = 1
                });
                context.Comments.Add(new Comment()
                {
                    Text = "Comment 1 in post 3", IsSoftDeleted = true, PostId = 3
                });
                context.Comments.Add(new Comment()
                {
                    Text = "Comment 2 in post 3", IsSoftDeleted = false, PostId = 3
                });

                context.SaveChanges();
            }
        }
        public void QueryFuturCache_1()
        {
            // CLEAN
            using (var context = new ModelAndContext.EntityContext())
            {
                context.EntitySimpleCacheOnlyDontNewUses.RemoveRange(context.EntitySimpleCacheOnlyDontNewUses);

                context.SaveChanges();
            }


            // SEED
            using (var context = new ModelAndContext.EntityContext())
            {
                for (int i = 0; i < 4; i++)
                {
                    context.EntitySimpleCacheOnlyDontNewUses.Add(new ModelAndContext.EntitySimpleCacheOnlyDontNewUse()
                    {
                        ColumnInt = i, ColumnString = i.ToString()
                    });
                }

                context.SaveChanges();
            }


            // TEST
            using (var context = new ModelAndContext.EntityContext())
            {
                QueryFutureValue <string> value1;
                QueryFutureValue <string> value2;
                string value3;
                string value4;

                {
                    var columnInt = 0;
                    value1 = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue();
                }

                {
                    var columnInt = 1;
                    value2 = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue();
                }

                {
                    var columnInt = 2;
                    // execute an implicit string, so value4 become a solo FutureValue
                    value3 = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue();
                }

                {
                    var columnInt = 3;
                    value4 = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue();
                }


                Assert.AreEqual("0", value1.Value);
                Assert.AreEqual("1", value2.Value);
                Assert.AreEqual("2", value3);
                Assert.AreEqual("3", value4);
            }

            // TEST
            using (var context = new ModelAndContext.EntityContext())
            {
                var columnInt = 3;
                var value     = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue().Value;

                Assert.AreEqual("3", value);
            }

            // TEST
            using (var context = new ModelAndContext.EntityContext())
            {
                var columnInt = 6;
                var value     = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).FutureValue().Value;

                Assert.IsNull(value);
            }

            // TEST
            using (var context = new ModelAndContext.EntityContext())
            {
                var columnInt = 3;
                var list      = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt == columnInt).Select(x => x.ColumnString).Future().ToList();

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


            // TEST
            using (var context = new ModelAndContext.EntityContext())
            {
                var columnInt = 3;
                var list      = context.EntitySimpleCacheOnlyDontNewUses.Where(x => x.ColumnInt < columnInt).Select(x => x.ColumnString).Future().ToList();

                Assert.AreEqual(3, list.Count);
            }
        }