using Bunny.Common.Connect;
using Bunny.Dao.Models.System;
using Bunny.Dao.Result;
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
};
}
}