生成模型
EF有两种查询方式,Linq查询 、Lambda表达式
???????????//普通查询 Linq 方式 ???????????IQueryable<Book> list = from b in db.Set<Book>() ??????????????????????where b.BookId > 5 && b.TypeId == 3 ??????????????????????select b; ???????????//普通查询 Lambda 方式 ???????????IQueryable<Book> list1 = db.Set<Book>() ???????????????.Where(b => b.BookId > 5 && b.TypeId == 3);
???????????//多表查询 Linq ???????????var list = from book in db.Set<Book>() ??????????????????????join bookType in db.Set<BookType>() ??????????????????????on book.TypeId equals bookType.TypeId ??????????????????????select new ??????????????????????{ ??????????????????????????book ??????????????????????}; ???????????//多表查询 lambda ???????????var list = db.Set<Book>() ???????????????.Where(u => u.BookId > 2 && u.TypeId == 4) ???????????????.Join(db.Set<BookType>(), book => book.TypeId, tp => tp.TypeId, (book, tp) => new { book, tp });
???????????//延迟加载 使用时才查询数据库 ?没用一次就查一次 ???????????IQueryable<Book> list = db.Set<Book>() ???????????????.OrderByDescending(u => u.BookId) ???//IQueryable对象中Expression方法默认将Lambda表达式转换成Expression对象 ???????????????.Skip(2) ???????????????.Take(3); ???????????//不具备延迟加载,因为IEnumerable没有方法去拼接完整sql语句 ???????????IEnumerable<Book> list1 = db.Set<Book>() ???????????????.AsEnumerable() ??//把结果强转成 IEnumerable 类型 ???????????????.OrderByDescending(u => u.BookId) ???????????????.Skip(2) ???????????????.Take(3);
增加数据
???????[HttpPost] ???????public ActionResult Add(Book book) ???????{ ???????????DbContext db = new DbModel(); ???????????db.Set<Book>().Add(book); ???????????//返回受影响行数 ???????????if(db.SaveChanges() > 0) ???????????{ ???????????????return Json(new ???????????????{ ???????????????????msg = "添加成功" ???????????????}); ???????????}else ???????????{ ???????????????return Json(new ???????????????{ ???????????????????msg = "添加失败" ???????????????}); ???????????} ???????}
修改数据
???????[HttpPost] ???????public ActionResult Edit(Book bb) { ???????????DbContext db = new DbModel(); ???????????//将对象附加到上下文 ?状态设置为未更改 ???????????db.Set<Book>().Attach(bb); ???????????db.Entry(bb).State = EntityState.Modified; ???????????db.SaveChanges(); ???????????return Json(new ???????????{ ???????????????msg = "修改成功" ???????????}); ???????}
删除数据
???????public ActionResult Delete(int id) { ???????????DbContext db = new DbModel(); ???????????Book book = db.Set<Book>().FirstOrDefault(b => b.BookId == id); ???????????db.Set<Book>().Remove(book); ???????????db.SaveChanges(); ???????????return Json(new ???????????{ ???????????????msg = "删除成功" ???????????},JsonRequestBehavior.AllowGet); ???????}
.NET Entity Framework基本使用方法
原文地址:https://www.cnblogs.com/xiaoliwang/p/9545770.html