Ejemplo n.º 1
0
        public void Create_New_Blogs()
        {
            UseInMemoryDbContext(options =>
            {
                using (var uowManager = new EfCoreUnitOfWorkManager())
                {
                    var repository = new EfCoreRepositoryBase <BloggingDbContext, Blog>(new BloggingDbContext(options));

                    var uow = new EfCoreUnitOfWork(
                        ((IRepositoryWithDbContext)repository).GetDbContext()
                        );

                    uowManager.Register(uow);

                    var blog = new Blog
                    {
                        Name         = "R's blog",
                        Url          = "https://www.cnblogs.com/rajesh",
                        CreationTime = DateTime.Now
                    };

                    var entity = repository.Create(blog);

                    uowManager.Commit();

                    entity.Id.ShouldBeGreaterThan(0);
                }
            });
        }
Ejemplo n.º 2
0
        public void Count_Blogs()
        {
            UseInMemoryDbContext(options =>
            {
                var repository = new EfCoreRepositoryBase <BloggingDbContext, Blog>(new BloggingDbContext(options));

                repository.Count().ShouldBe(0);
            });
        }
Ejemplo n.º 3
0
        public void Multiple_Operations()
        {
            InitializeInMemoryDbContext(options =>
            {
                using (var uowManager = new EfCoreUnitOfWorkManager())
                {
                    var r1 = new PostRepository(new BloggingDbContext(options));
                    uowManager.Register(new EfCoreUnitOfWork(
                                            ((IRepositoryWithDbContext)r1).GetDbContext()
                                            ));

                    var r2 = new PostRepository(new BloggingDbContext(options));
                    uowManager.Register(new EfCoreUnitOfWork(
                                            ((IRepositoryWithDbContext)r2).GetDbContext()
                                            ));

                    var r3 = new EfCoreRepositoryBase <BloggingDbContext, Comment>(new BloggingDbContext(options));
                    uowManager.Register(new EfCoreUnitOfWork(
                                            ((IRepositoryWithDbContext)r3).GetDbContext()
                                            ));

                    var p1 = new Post
                    {
                        Title = "r1 新增 Post"
                    };
                    r1.Create(p1);

                    var p2   = r2.All().First();
                    p2.Title = "r2 修改 Post";
                    r2.Modify(p2);

                    var c3Id = r3.All().First().Id;
                    r3.Remove(c3Id);

                    uowManager.Commit();

                    var r4 = new PostRepository(new BloggingDbContext(options));

                    r4.All().Count().ShouldBe(3);
                    r4.Single(s => s.Id.Equals(p2.Id)).Title.ShouldBe("r2 修改 Post");

                    var r5 = new EfCoreRepositoryBase <BloggingDbContext, Comment>(new BloggingDbContext(options));
                    r5.SingleOrDefault(s => s.Id == c3Id).ShouldBeNull();
                }
            });
        }
Ejemplo n.º 4
0
        public static void InitializeInMemoryDbContext(Action <DbContextOptions <BloggingDbContext> > action)
        {
            UseInMemoryDbContext(options =>
            {
                using (var uowManager = new EfCoreUnitOfWorkManager())
                {
                    var repository = new EfCoreRepositoryBase <BloggingDbContext, Blog>(new BloggingDbContext(options));

                    var uow = new EfCoreUnitOfWork(
                        ((IRepositoryWithDbContext)repository).GetDbContext()
                        );

                    uowManager.Register(uow);

                    var blog = new Blog
                    {
                        Name         = "R's blog",
                        Url          = "https://www.cnblogs.com/rajesh",
                        CreationTime = DateTime.Now,
                        Posts        = new List <Post>
                        {
                            new Post
                            {
                                Title    = "Libs 仓储设计",
                                Summary  = "",
                                Content  = "",
                                Comments = new List <Comment>
                                {
                                    new Comment
                                    {
                                        Content = "先马后看"
                                    },
                                    new Comment
                                    {
                                        Content = "先马后看 +1"
                                    },
                                }
                            },
                            new Post
                            {
                                Title    = "Libs 工作单元设计",
                                Summary  = "",
                                Content  = "",
                                Comments = new List <Comment>
                                {
                                    new Comment
                                    {
                                        Content = "先马后看"
                                    },
                                    new Comment
                                    {
                                        Content = "先马后看 +1"
                                    },
                                }
                            }
                        }
                    };

                    var entity = repository.Create(blog);

                    uowManager.Commit();

                    entity.Id.ShouldBeGreaterThan(0);

                    var postRepository = new PostRepository(new BloggingDbContext(options));
                    postRepository.Count().ShouldBe(2);

                    var commentRepository = new EfCoreRepositoryBase <BloggingDbContext, Comment>(new BloggingDbContext(options));
                    commentRepository.Count().ShouldBe(4);

                    action(options);
                }
            });
        }