ORM框架EF Core详细教程
下面是一个简单是.net core项目引用EF core包完成简单的访问数据库的操作流程
就我而言 我不喜欢使用它 第一点,因为它在生成实体模型时 生成第一遍之后 由于数据库中某些字段更改了需要重新生成一边 EFcore会叠加生成新修改的内容 旧的实体不会删除掉(不应该这样做)。第二点 如果你删除了生成的实体模型 你再去执行生成语句 他会执行失败。 可能是语句不对 我也不清楚 总之很麻烦
第一步 下载Nuget包
第二步 打开程序包管理控制台
第三步 输入执行语句
Scaffold-DbContext "Server=.;Database=LocalDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir models -Force -UseDatabaseNames
LocalDBb表示你的数据库名
Microsoft.EntityFrameworkCore.SqlServer表示使用的sqlserver数据库
Force 表示重置更新实体(用于数据库更新字段时 会重置实体内容)
EF Core使用Scaffold-DbContext(在执行语句中可以看到)命令从数据库生成模型
注意:使用Scaffold-DbContext命令需要项目中安装 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.SqlServer 包,如果是MySQL的话则安装 Pomelo.EntityFrameworkCore.MySql
然后就可以在 程序包管理器控制台 中运行 Scaffold-DbContext 命令了。
执行 get-help Scaffold-DbContext 可以查看帮助,会输出一下信息 可自行执行查看
配置生成模型的参数 上面我执行的语句 就在里面对应
-Connection 数据库连接字符串,必须指定,不同数据库不一样 -Provider 数据库的提供器 -Project 指定将代码生成到哪个项目下 -OutputDir 生成的代码放在项目的哪个目录下 -Context 上下文名称 -Force 强制重写 -StartProject 启动项目
第四步 他会自动生成你语句中models的文件夹 里面 是你的实体类
注意这个LocalDBContext是生成的中间操作类
第五步 在appsetting中加上数据库连接字符串
第六步 在startup中配置
第七步 直接在控制器中执行
//增加
Tset tset = new Tset();
tset.ID = Guid.NewGuid();
tset.Name = "jshad";
tset.Context = "akhcka";
_context.Set<Tset>().Add(tset);
//增加改都需要保存改变
_context.SaveChanges();
//删除
Tset tset1 = new Tset();
tset1.ID = new Guid("5446f36d-6611-420c-9e73-e25620206de0");
_context.Set<Tset>().Remove(tset1);
//增加改都需要保存改变
_context.SaveChanges();
//查询列表
var aa = _context.Set<Tset>().ToList();
//根据id查询数据
Guid id = new Guid("c9edfd0d-6766-4746-a07f-3075bde0d897");
var bb = _context.Set<Tset>().Find(id);
//查询一行
var cc = _context.Locals.Where(p => p.sendtime == "ajfhjah").FirstOrDefault();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构