using Bunny.Common.Context; using Bunny.Common.Utils.Net; using Bunny.Dao.Dto.System; using Bunny.Dao.Entity.System; using Bunny.Dao.Model.Result; using Microsoft.AspNetCore.Components; namespace Bunny.Service.IService.Service; public class BlogService : IBlogService { [Inject] public required EfCoreContext DbContext { get; set; } /// /// 添加Blog /// /// /// public void AddBlog(Blog dto) { DbContext.Add(dto); DbContext.SaveChanges(); } /// /// 查询BLog /// /// public List QueryBlog() { return DbContext.Blogs.ToList(); } /// /// 更新Blog内容 /// /// public void UpdateBlog(BlogUpdateDto dto) { var blog = new Blog(); NetUtil.CopyProperties(dto, blog); DbContext.Blogs.Update(blog); DbContext.SaveChanges(); } /// /// 删除BLog /// /// public void DeleteBlog(string id) { var blog = new Blog { Id = Guid.NewGuid() }; 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 { 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(); 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 { 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.Take(limit).Skip(page).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 }; } }