当前位置: 首页 > news >正文

.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 == "王五");//Gridifyvar 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

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

http://www.lryc.cn/news/532948.html

相关文章:

  • 2025.2.5——五、[网鼎杯 2020 青龙组]AreUSerialz
  • 电风扇各国检测认证详细介绍美国FCC+UL欧盟CE+ROHS日本PSE+METI备案+英国UKCA
  • Flutter Isolate解决耗时任务导致卡死
  • 使用deepseek快速创作ppt
  • STM32的HAL库开发---高级定时器---输出比较模式实验
  • python Excel 表读取合并单元格以及清除空格符
  • 额外题目汇总2-链表
  • C#控件开发6—指示灯
  • 探索从传统检索增强生成(RAG)到缓存增强生成(CAG)的转变
  • 【学习总结|DAY036】Vue工程化+ElementPlus
  • 【GitHub】GitHub 2FA 双因素认证 ( 使用 Microsoft Authenticator 应用进行二次验证 )
  • c# 2025/2/7 周五
  • 蓝桥杯思维训练(五)
  • I.MX6ULL 中断介绍下
  • Elasticsearch 生产集群部署终极方案
  • Python用langchain、OpenAI大语言模型LLM情感分析苹果股票新闻数据及提示工程优化应用...
  • 【正点原子K210连载】第六十七章 音频FFT实验 摘自【正点原子】DNK210使用指南-CanMV版指南
  • Centos Ollama + Deepseek-r1+Chatbox运行环境搭建
  • ReactNative进阶(五十九):存量 react-native 项目适配 HarmonyOS NEXT
  • go并发和并行
  • 一种解决SoC总线功能验证完备性的技术
  • Web3 与区块链:开启透明、安全的网络新时代
  • c#中Thread.Join()方法的经典示例
  • 深入了解越权漏洞:概念、危害与防范
  • MySQL 数据库编程-C++
  • dl学习笔记(9):pytorch数据处理的完整流程
  • wps中的vba开发
  • 力扣 LCR 078 合并K个升序链表
  • 【hive】记一次hiveserver内存溢出排查,线程池未正确关闭导致
  • React Native 开发 安卓项目构建工具Gradle的配置和使用