EF框架下如何进行增删改
环境搭建
- 创建数据库TestDB(名称可以自取,不做要求)
- 在数据库中创建表格ClassInfos(该表格的字段下面有图参考,表格名称可以自取,不做要求)
- 在表中添加数据
- 创建.net MVC 项目,并在Controllers文件夹下创建控制器(以表名命名,不要加s)
增删改语法
-
新增
方式一:db.表名.Add(obj);db.SavaChanges();
方式二:db.Entry(obj).State=EntryState.Added;db.SavaChanges(); -
批量新增
方式一:db.表名.AddRange(obj);db.SavaChanges(); -
修改
方式一:var obj=db.表名.Find(ID);obj.属性=“值”;db.SavaChanges();
方式二:db.Entry(obj).State=EntryState.Modified;db.SavaChanges(); -
删除
方式一:var obj=db.表名.Find(ID);db.表名.Remove(obj);db.SavaChanges();
方式二:db.Entry(obj).State=EntryState.Deleted;db.SavaChanges(); -
批量删除
方式一:var obj=db.表名.Find(ID);db.表名.RemoveRange(obj);db.SavaChanges();
举例说明
(这个通过.net MVC 框架)
(复制代码是测试时,不要全部一起复制,这样会报错的,应该单一测试学习。)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;//这里记住引入命名空间
using System.Data.Entity;//同上
namespace WebApplication1.Controllers
{
public class ClassInfoController : Controller
{
// GET: ClassInfo
TestDB6Entities db = new TestDB6Entities();
public ActionResult Index()
{
var classinfo = new ClassInfo()
{
Name="2018173807",
Remark="七班",
TeacherID=1,
Term=1
};
db.ClassInfos.Add(classinfo);
db.Entry(classinfo).State = EntityState.Added;
//批量新增
List<ClassInfo> classInfos = new List<ClassInfo>()
{
new ClassInfo()
{
Name="2018173801",
Remark="一班",
TeacherID=1,
Term=1
},
new ClassInfo()
{
Name="2018173802",
Remark="二班",
TeacherID=1,
Term=1
},
};
db.ClassInfos.AddRange(classInfos);
db.SaveChanges();
//修改的两种方式
// 一,先查询在修改,修改某个属性,不会影响其他属性的变化
var classinfo = new ClassInfo()
{
ID=4,
Remark = "七班"
};
db.Entry(classinfo).State = EntityState.Modified;
db.SaveChanges();
// 二,new对象,将对象的状态,改为修改状态,这样,可能将其他属性设置为空
var classInfos = db.ClassInfos.Find(3);
classInfos.Remark = "四班";
db.SaveChanges();
//删除2种方式
//一:
var classinfo = new ClassInfo()
{
ID = 4
};
db.Entry(classinfo).State = EntityState.Deleted;
//二:
var classInfos = db.ClassInfos.Find(3);
db.ClassInfos.Remove(classInfos);
db.SaveChanges();
//批量删除
//一:
var classinfos = db.ClassInfos.Where(p => p.Remark == "四班").ToList();
foreach (var item in classinfos)
{
db.ClassInfos.Remove(item);
}
//二:
List<ClassInfo> classInfos=db.ClassInfos.Where(p => p.Remark == "四班").ToList();
db.ClassInfos.RemoveRange(classInfos);
db.SaveChanges();
//查询
//精准查询,查询班级为2018173806
var classinfos = db.ClassInfos.Where(p => p.Name == "2018173806").ToList();
//模糊查询 查询班级有2018
var classinfos1 = db.ClassInfos.Where(p => p.Name.Contains("2018")).ToList();
//组合查询,查询学期为1,且教师也是1
var classinfos2 = db.ClassInfos.Where(p => p.Term==1&&p.TeacherID==1).ToList();
//组合查询,查询学期为2 或者教师为2
var classinfos3 = db.ClassInfos.Where(p => p.Term == 1 || p.TeacherID == 1).ToList();
//总结
//新增
//方式一:db.表名.Add(obj);db.SavaChanges();
//方式二:db.Entry(obj).State=EntryState.Added;db.SavaChanges();
//批量新增
//方式一:db.表名.AddRange(obj);db.SavaChanges();
//修改
//方式一:var obj=db.表名.Find(ID);obj.属性="值";db.SavaChanges();
//方式二:db.Entry(obj).State=EntryState.Modified;db.SavaChanges();
//删除
//方式一:var obj=db.表名.Find(ID);db.表名.Remove(obj);db.SavaChanges();
//方式二:db.Entry(obj).State=EntryState.Deleted;db.SavaChanges();
//批量删除
//方式一:var obj=db.表名.Find(ID);db.表名.RemoveRange(obj);db.SavaChanges();
return View();
}
}
}
以上代码运行时会出现以下出现找不到视图的错误,属于正常,因为没有创建视图,效果请到数据库表中查看数据是否有增删改。