基于之前的CLI或者PMC创建的模型及数据库上下文,我们来实现对数据库单表的增删查改操作,内容比较简单,简单的基础是我们已经熟悉LINQ操作以及前面文章的铺垫
现在咱们直接上代码然后进行讲解
using (var db=new SchoolContext()) { //我们要做的是对teacher表进行增删查改 //首先我们先新增数据 db.Add(new Teacher() { Salary = 20000, Age = 30, CreateTime = DateTime.Now, InductionTime = DateTime.Now.AddYears(-10), IsDetele = false, IsMarried = true, Job = "语文老师", Name = "张珊", UpdateTime = DateTime.Now }); db.SaveChanges(); 查询数据 var teacher = db.Teachers.FirstOrDefault(a=>a.Name== "张珊"); ; Console.WriteLine($"查询出的数据:{JsonConvert.SerializeObject(teacher)}"); //修改数据 teacher.Age = 40; db.Teachers.Update(teacher); db.SaveChanges(); Console.WriteLine($"查询出的数据:{JsonConvert.SerializeObject(teacher)}"); db.Teachers.Remove(teacher); db.SaveChanges(); Console.WriteLine($"删除完成"); }
大家应该发现一个规律就是每次执行完新增.修改.删除这些操作时都需要调用db.SaveChanges();这段代码,为什么?这段代码有什么特别之处吗?
官方给出了解释:
每个上下文实例都有一个 ChangeTracker,它负责跟踪需要写入数据库的更改。 更改实体类的实例时,这些更改会记录在 ChangeTracker 中,然后在调用 SaveChanges 时被写入数据库。 此数据库提供程序负责将更改转换为特定于数据库的操作(例如,关系数据库的 INSERT、UPDATE 和 DELETE 命令)
什么意思呢?
咱来解释一下,首先代码中只要涉及到数据变更的操作都会保存在ChangeTracker 这个里面,这个东西是啥玩意,不知道 ,经过百度翻译后,原来是变更跟踪器,相当于一个容器,用于保存所有数据操作 除了查询,然后SaveChanges 就是将这些操作进行提交到数据库中执行,这就意味着,如果不进行这个这段代码的调用的话,所有数据变更操作都是失效的,所以这句话至关重要。
其他的操作就很简单了,都是EF core 最常用的方法 官方文档上都有,后面的文章上涉及到了咱们再慢慢讲解与分析。