Entity Framework应用:使用EF的DataBase First模式实现数据库的增删改查
在上一篇文章中讲解了如何生成EF的DBFirst模式,接下来讲解如何使用DBFirst模式实现数据库数据的增删改查
一、新增数据
新增一个Student,代码如下:
1 static void Add() 2 { 3 using (StudentSystemEntities dbContext = new StudentSystemEntities()) 4 { 5 // 定义Student对象 6 Student stu = new Student() 7 { 8 StudentName = "花千骨", 9 Sex = "女", 10 Age = 3422, 11 Major = "舞蹈专业", 12 Email = "2345678911@qq.com" 13 }; 14 // 将EF执行的SQL语句输出到控制台 15 dbContext.Database.Log += p => Console.WriteLine(p); 16 // 只是内存上面的操作 17 dbContext.Students.Add(stu); 18 // 保存的数据库 19 dbContext.SaveChanges(); 20 Console.WriteLine("保存成功"); 21 } 22 }
在Main()方法里面调用Add()方法,结果:
查看数据库结果:
从上面的两个截图中可以看出数据新增成功。
二、查询数据
查询StudentName是唐僧的学生信息并输出:
1 static void Query() 2 { 3 using (StudentSystemEntities dbContext = new StudentSystemEntities()) 4 { 5 List<Student> list = dbContext.Students.Where(p => p.StudentName == "唐僧").ToList<Student>(); 6 list.ForEach(p => 7 { 8 Console.WriteLine("姓名:"+p.StudentName+",年龄:"+p.Age+",专业:"+p.Major+",邮箱:"+p.Email); 9 }); 10 } 11 }
在Main()方法里面调用Query(),结果:
三、修改数据
修改StudentName为花千骨的学生年龄:
1 static void Edit() 2 { 3 using (StudentSystemEntities dbContext = new StudentSystemEntities()) 4 { 5 // 将EF执行的SQL语句输出到控制台 6 dbContext.Database.Log += p => Console.WriteLine(p); 7 // 查询要修改的数据,FirstOrDefault表示查询到的第一条数据 8 Student student = dbContext.Students.Where(p => p.StudentName == "花千骨").FirstOrDefault(); 9 // 保存修改 10 student.Age = 234; 11 dbContext.SaveChanges(); 12 Console.WriteLine("修改成功"); 13 } 14 }
结果:
查看数据库数据:
四、删除数据
删除新添加的数据:
1 static void Delete() 2 { 3 using (StudentSystemEntities dbContext = new StudentSystemEntities()) 4 { 5 // 将EF执行的SQL语句输出到控制台 6 dbContext.Database.Log += p => Console.WriteLine(p); 7 // 先查询然后在删除 8 Student stu = new Student() 9 { 10 StudentID=18 11 }; 12 // 附加到集合中 13 dbContext.Students.Attach(stu); 14 // 删除的SQL语句是根据stu的StudentID生成的 15 dbContext.Students.Remove(stu); 16 // 保存 17 dbContext.SaveChanges(); 18 Console.WriteLine("删除成功"); 19 } 20 }
结果:
查看数据库:
数据删除成功。
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决