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();

posted @   原往  阅读(862)  评论(0编辑  收藏  举报
编辑推荐:
· 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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示