using Bunny.Common.Connect; using Bunny.Dao.Entity.Result; using Bunny.Dao.Entity.System; namespace Bunny.Service.IService.Service; public class BlogService : IBlogService { private readonly EfCoreContext _dbContext; public BlogService(EfCoreContext dbContext) { _dbContext = dbContext; } /// /// 添加Blog /// /// /// public void AddBlog(Blog dto) { _dbContext.Add(dto); _dbContext.SaveChanges(); } /// /// 查询BLog /// /// public List QueryBlog() { return _dbContext.Blogs.ToList(); } /// /// 更新Blog内容 /// /// public void UpdateBlog(Blog dto) { _dbContext.Blogs.Update(dto); _dbContext.SaveChanges(); } /// /// 删除BLog /// /// public void DeleteBlog(string id) { var blog = new Blog { Id = id }; _dbContext.Blogs.Remove(blog); _dbContext.SaveChanges(); } /// /// 批量添加数据 /// /// public void AddBatchBlogs(string url) { var list = new List(); for (var i = 0; i <= 100000; i++) list.Add(new Blog { Id = $"{i}", Url = url, CreateTime = DateTime.Now, UpdateTime = DateTime.Now, UpdateUserId = Random.Shared.Next(), CreateUserId = Random.Shared.NextInt64() }); _dbContext.Blogs.AddRange(list); _dbContext.SaveChanges(); } /// /// 批量删除BLog /// public void DeleteBatchBlogs() { var list = new List(); for (var i = 0; i < 10; i++) { var blog = new Blog { Id = $"{i}" }; list.Add(blog); } _dbContext.Blogs.RemoveRange(list); _dbContext.SaveChanges(); } /// /// 批量更新_带事务 /// public void UseTransaction() { // 还可以使用异步的 var transaction = _dbContext.Database.BeginTransaction(); // 执行批量更新操作 var list = new List(); for (var i = 0; i < 10; i++) { var blog = new Blog { Id = $"{i}", Url = "https://learn.microsoft.com/zh-cn/ef/core/saving/transactions" }; list.Add(blog); } // 更新内容 _dbContext.Blogs.UpdateRange(list); _dbContext.SaveChanges(); // 还可以使用异步方式 transaction.Commit(); } /// /// 分页查询 /// /// /// public PageResult QueryPage(int page, int limit) { var items = _dbContext.Blogs.ToList(); var total = items.Count; var pages = (int)Math.Ceiling(total / (double)limit); var blogs = items.Skip((page - 1) * limit).Take(limit).ToList(); return new PageResult { PageNo = page, Total = total, PageSize = limit, Pages = pages, Data = blogs }; } }