Bootstrap

.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

温故而知新:后端通用查询方案的再思考 - 知乎

;