.net8.0使用EF连接sqlite数据库及使用Gridify实现查询的简易实现
EF Core
EF Core 是一个流行的对象关系映射(ORM)框架,它简化了与数据库的交互,提供了一个高效、灵活且易于使用的数据访问层。
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:
- 使 .NET 开发人员能够使用 .NET 对象处理数据库。
- 无需再像通常那样编写大部分数据访问代码。
EF Core 支持多个数据库引擎。
Gridify
Gridify 是一个现代化动态 LINQ 库,它以最简单的方式将您的字符串转换为 LINQ 查询,并且有出色的性能。它还提供了一种使用基于文本的数据应用过滤、排序和分页的简单方法,您还可以很方便的和 Entity framework 结合使用。
这里为什么使用Gridify而不是直接使用ling查询,我想一个是这个字符串过滤器很方便,无需手动解析请求字符串再去一个个拼接查询linq,再者使gridify可以很方便的实现分页查询
实战代码
模型
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
数据库上下文
public class MyContext:DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=data.db");
//配置日志
//optionsBuilder.LogTo(Console.WriteLine, new[] { DbLoggerCategory.Database.Connection.Name });
}
public virtual DbSet<User> Users { get; set; } = null!;
}
使用
static void Main(string[] args)
{
using (var db = new MyContext())
{
var user = new[] { new User() { Id = 1, Name = "张三" }, new User() { Id = 2, Name = "李四" }, new User() { Id = 3, Name = "王五" }, new User() { Id = 4, Name = "王久" } };
db.Users.AddRange(user);
db.SaveChanges();
//db.Users.RemoveRange(user);
//db.SaveChanges();
var users = db.Users.ToList();
//LINQ
//var result = users.Where(x => x.Name == "王五");
//Gridify
var result = users.AsQueryable().ApplyFiltering("Name=王五").ToList();
foreach (var userss in result)
{
Console.WriteLine(userss.Name);
}
var gq = new GridifyQuery()
{
//Filter = "Name=王*",
Page = 1,
PageSize = 20,
OrderBy = "Id"
};
Paging<User> results = users.AsQueryable().Gridify(gq);
}
}
参考文章:
2024-08-31 C# 为什么使用EF Core - 简书
Introduction | Gridify
.NET 现代化动态 LINQ 库 Gridify
温故而知新:后端通用查询方案的再思考 - 知乎