一、上下文对象简介
在MVC项目中添加一个EDMX文件的时候会添加很多文件进来,其中包括.Context.tt,和.tt这两个T4模板,其中.Context.tt是用来生成上下文对象的T4模板,.tt生成实体类的T4模板。如图:
实体框架 会帮我们生成XML文件和实体类,这里它已经生成了我们要的XML和实体类,但是我们如果我们要操作实体对象保存到数据库中还是要通过EF上下文。
我们打开上下文对象.Context.tt文件,可以发现,上下文对象为我们的每一个表都生成了一个DbSet集合,如下图
这个继承DbContext的Nee32Entities对象就是EF提供给我们操作数据库的接口,通过Nee32Entities这个对象,就可以把内存中的数据添加到数据库中。
二、使用上下文对象增删改查
这里使用的是控制台应用程序来演示,先在数据库建表,然后再新建一个控制台应用程序,添加EDMX文件, 导入需要操作的数据库
2.1 新增
//通过EF 上下文对象新增到数据库 Nee32Entities db = new Nee32Entities();//创建一个上下文对象 // 添加文章品类 static void AddCategory() { //创建实体对象 B_Category category = new B_Category() { CateDescribe = "test",CateName = "aaaaaaa",CreateTime = DateTime.Now,MemberID = 1,Status = 1 }; db.B_Category.Add(category);//将对象添加到 上下文对象 的B_Category集合中 db.SaveChanges();//调用上下文对象的保存方法,将对象存入数据库 }
执行一下这个方法
数据中的内容
2.2 简单查询
// 查询 static List<B_Category> QueryCate(string cateName) { var category = db.B_Category.Where(c => c.CateName.Contains(cateName)).ToList();//使用Lambda表达式 //var category = (from c in db.B_Category where c.CateName.Contains(cateName) select c).ToList();//使用Linq return category; }
2.3 修改
//修改 先查询 再修改 static void EditCate() { B_Category category = db.B_Category.Where(c => c.ID == 1).FirstOrDefault();//先查找出要修改的对象 category.CateName = "bbbbbbbb";//修改数据 db.SaveChanges(); }
2.4 删除
//删除 static void DeleteCate() { //第一种 把要删除的对象先查出来 B_Category category = db.B_Category.Where(c => c.ID == 1).FirstOrDefault(); //第二种 直接使用主键删除 B_Category category = new B_Category() { ID = 1 }; db.B_Category.Attach(category);//将 通过主键 实例化的实体类附加到EF中 db.B_Category.Remove(category);//将 category从 上下文对象 的B_Category集合中移除 db.SaveChanges(); }