EF笔记——对数据库进行简单的增删查改
- 一,EF框架的三种模式
- 二,简单的使用EF框架进行操作
- 1,我们先创建数据库TestDB,并创建一张Roles表
- 2,我们在VS里面创建一个Web应用程序
- (1)在Models文件夹下面添加ADO.NET 实体数据模型,并且在控制器上方引用
- (2)在控制器中实例化DbContext子类
- 3,开始操作(控制器)
- (1)查数据
- (2)新增数据
- (3)修改数据
- (4)删除数据
一,EF框架的三种模式
1,DataBase First 数据库优先
传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。简历理解就是先设计数据库,创建好数据库映射成对象和上下文。2,Model First 模型优先
先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。简单理解就是设计EDM模型然后生成到数据库和创建对象和上下文。3,CodeFirst 代码优先
手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是需要手动定义实体模型和关系映射。简单理解就是自己写好实体对象和映射关系,最后通过命令生成到数据库中去。
二,简单的使用EF框架进行操作
1,我们先创建数据库TestDB,并创建一张Roles表
2,我们在VS里面创建一个Web应用程序
(1)在Models文件夹下面添加ADO.NET 实体数据模型,并且在控制器上方引用
using Test.Models;
//using 解决方案名称+MOdels
(2)在控制器中实例化DbContext子类
TestDBEntities db = new TestDBEntities();
3,开始操作(控制器)
(1)查数据
//1,根据ID查询单条数据
var role= db.Roles.Find(1);
//2,查询全部数据
var role= db.Roles.ToList();
//3,根据条件查询数据
var role=db.Roles.Where(p=>p.Remark == "负责").ToList();
//最后将数据返回到视图
return View(role);
(2)新增数据
//新增一个角色,第一种方法
Role role = new Role()
{
Name = "招生办",
Remark = "招人"
};
db.Roles.Add(role);
//新增一个角色,第二种方法
Role role1 = new Role()
{
Name = "招生办1",
Remark = "招人1"
};
db.Entry(role1).State = System.Data.Entity.EntityState.Added;//修改数据的状态
//批量新增
List<Role> roles = new List<Role>()
{
new Role(){ Name = "招生办2",Remark = "招人2" },
new Role(){ Name = "招生办3",Remark = "招人3" }
};
db.Roles.AddRange(roles);
db.SaveChanges();
return View();
(3)修改数据
//第一种方法
Role role = db.Roles.Find(3);
role.Name = "李四";
db.Entry(role).State = System.Data.Entity.EntityState.Modified;
//第二种方法
Role role = new Role()
{
ID=3,
Name="招生处",
Remark="招生"
};
db.Entry(role).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return Content("修改成功");
(4)删除数据
//删除第一种方法
var role = db.Roles.Find(6);
db.Roles.Remove(role);
//删除第二种方法
Role role = new Role()
{
ID=6
};
db.Entry(role).State = System.Data.Entity.EntityState.Deleted;
//批量删除
List<Role> roles = db.Roles.Where(p => p.Remark == "666").ToList();
db.Roles.RemoveRange(roles);
db.SaveChanges();
return Content("删除成功");
看了之后,是不是也觉得很简单很有趣呢,一起来实践操作一下吧!