EFCore 数据请求
- EFCoreEntity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:
使 .NET 开发人员能够使用 .NET 对象处理数据库。
无需再像通常那样编写大部分数据访问代码。
EF Core 支持多个数据库引擎,请参阅数据库提供程序了解详细信息。
1.引用组件
Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design
2.安装dotnet-ef dotnet tool install -g dotnet-ef
3.生成实体类 指定输出文件夹为Models
Scaffold-DbContext "Server=.;Database="dbName";uid=*;pwd=*; TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

4. 注入
//依赖注入IOC
builder.Services.AddDbContext(options => options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
));5.创建通用基础类,可自行封装
public interface IBaseService where T : class, new()
{
Task Query();
Task Query(Expression func);
Task Query(int pageIndex, int size, RefAsync total);
Task Query(Expression func, int pageIndex, int size, RefAsync total);
}6.创建类继承自IBaseService,WmblogMssqlMainContext 为刚才生成的DbContext
public class BaseService : IBaseService where T : class, new()
{
protected WmblogMssqlMainContext db;
protected DbSet dbSet;
public DbSet DbSet { get; set; }
public BaseService(WmblogMssqlMainContext myBlogContext)
{
db = myBlogContext;
dbSet = db.Set();
}
public async Task Query()
{
return await dbSet.ToListAsync();
}
public async Task Query(Expression func)
{
return await dbSet.Where(func).ToListAsync();
}
public async Task Query(int pageIndex, int size, RefAsync total)
{
var qresult = dbSet.Skip((pageIndex - 1) * size).Take(size);
total.Value = dbSet.Count();
return await qresult.ToListAsync();
}
public async Task Query(Expression func, int pageIndex, int size, RefAsync total)
{
var qresult = dbSet.Where(func).Skip((pageIndex - 1) * size).Take(size);
total.Value = dbSet.Count();
return await qresult.ToListAsync();
}
}7. Program 注入基础类
builder.Services.AddScoped(typeof(IBaseService<>), typeof(BaseService<>));
8.Controller 调用
public class BlogController : ControllerBase
{
private readonly IBaseService blogNewsService;
public BlogController(IBaseService blogNewsService)
{
this.blogNewsService = blogNewsService;
}
[HttpGet]
public async Task GetAll()
{
var blogNewsList = await blogNewsService.Query();
if (blogNewsList == null || blogNewsList.Count == 0) return ApiResultHelper.Error("没有文章数据");
else
{
return ApiResultHelper.Success(blogNewsList);
//return ApiResultHelper.Success(mapper.Map(blogNewsList));
}
}
}