一,瞭解Entity Framework
實體框架(Entity Framework)是微軟以ADO.Net爲基礎開發出來的對象關係映射(ORM)解決方案,它解決了對象持久化問題,將程序員從編寫麻煩的SQL語句當中解放出來。
相對於傳統的ADO等各種數據庫操縱技術來說,微軟的ADO.Net更爲先進,它封裝了很多底層操作,抽象了接口,針對接口編程,將調用統一化。
二,Entity Framework的應用
在MVC中創建EF框架進行增刪改查
- 新建一個MVC項目
-
導入數據庫實體模型
在Models文件夾內添加一個新建項,在Data裏面點擊ADO.NET 實體數據模型,選擇數據庫,添加實體模型
-
在ClassInfo表中增加一條數據
//新增
var classinfo = new ClassInfo()
{
Name = "2018173807",
Remark = "七班",
TeacherID = 1,
Term = 2
};
//第一種方法 使用Add()方法添加
db.ClassInfos.Add(classinfo);
//第二種方法 講狀態改爲Added實現添加
db.Entry(classinfo).State = System.Data.Entity.EntityState.Added;
db.SavaChange();
//批量新增
List<ClassInfo> classes = new List<ClassInfo>()
{
new ClassInfo()
{
Name="2018173808",
Remark="七班",
TeacherID=1,
Term=2
},
new ClassInfo()
{
Name="2018173808",
Remark="七班",
TeacherID=1,
Term=2
}
};
db.ClassInfos.AddRange(classes);
db.SavaChange();
- 修改ClassInfo表的一條數據
//修改2種方式
//一,先查詢,修改整個屬性,不會影響其他屬性變化
var classinfo1 = db.ClassInfos.Find(1);
classinfo1.Remark = "六班";
db.SavaChange();
//二,new對象,將對象的狀態改爲修改狀態,弊端是會將未賦值屬性設置爲空
ClassInfo classinfo2= new ClassInfo()
{
ID=1,
Name="2018173805",
Term=1,
TeacherID=1,
Remark="五班"
};
db.Entry(classinfo2).State = System.Data.Entity.EntityState.Modified;
db.SavaChange();
- 刪除ClassInfo表的一條數據
//刪除兩種方式
//先根據ID查詢,再刪除
var c1 = db.ClassInfos.Find(1);
db.ClassInfos.Remove(c1);
db.SavaChange();
//new一個對象,將狀態改爲刪除狀態
var c2 = new ClassInfo()
{
ID=1
};
db.Entry(c2).State = System.Data.Entity.EntityState.Deleted;
db.SavaChange();
//批量刪除
List<ClassInfo> info1 = db.ClassInfos.Where(p => p.Remark == "五班").ToList();
db.ClassInfos.RemoveRange(info1);
db.SavaChange();
- 查詢
//精確查詢,查詢班級號爲2018173806的
var classInfos1 = db.ClassInfos.Where(p => p.Name == "2018173806").ToList();
//模糊查詢,查詢班級號含有2018的
var classInfos2 = db.ClassInfos.Where(p => p.Name.Contains("2018")).ToList();
//組合查詢,查詢學期是1同時老師也是1的
var classInfo3 = db.ClassInfos.Where(p => p.Term == 1 && p.TeacherID == 1).ToList();
//組合查詢,查詢學期是2或者老師是2的
var classInfo4 = db.ClassInfos.Where(p => p.Term == 2 || p.TeacherID == 2).ToList();