上傳和下載.net開源插件項目的網站 www.nuget.org
ORM:實體對象關系型數據庫映射,這一類的組件都叫做ORM
對象——》數據庫——》 對象的映射的過程
ORM關系圖:
EF:是一種很常用的ORM框架
Linq增刪改
增:
刪:
改:
查:
深入EF:
Model1.edmx:其實本質就是一個XML文件
XML:其中有三個重要部分
1數據庫中的實體節點
2集合中的實體對象節點
3映射關系節點
后綴tt結尾其實就是一個文件模板
2016-7-7ModelFirst
ModelFrist
代碼先行,即先寫模型代碼,后生成數據庫中的表
相對於先設計數據庫,在生成模型代碼
使用情況:
當你的項目沒有使用EF的時候,就可以這么來做,ModelFrist代碼先行
注意:
要保持數據庫就概念模型對象的一致,如果發生了不一致的情況,那么要從數據庫中更新模型
或者更具模型生成數據庫,至少要更新一邊,但是可能會丟失數據,所以最好不要更具模型來更新數據庫
延時加載
使用Linq的時候, 返回IQueryble<T>或IEnumerable<T>都是延遲加載的,在沒有用的時候是不會執行SQL語句,只有再用到數據的時候才會執行SQL語句。
如果你想要先得到數據再來操作的話可以使用一個方法
var list2 = list.ToList<T>();//這里的list時拼接linq命令后的得到的對象
2016-7-7dbContext筆記
DbContext中還有兩大集合
Entry
Set
增加,查詢時,推薦使用屬性的方式
修改,刪除使用Entry標記的方式來
增加
//先創建一個DbContext 這里創建的是context
//創建一個新的對象類型這里以Student為例
Student s1 = new Student(){sName = "jk", sAddress = "hb"};;
context.Entry<Student>(s1).State = EntityState.Added;
context.SaveChanges();
//添加和不適用標記的方式沒什么太大的區別,建議不使用標記的方式增加
刪除 (推薦使用)//只根據主鍵刪除
Student s1 = new Student(){sID = 8, sAddress = "hb"};
context.Entry<Student>(s1).State = EntityState.Deleted;
context.SaveChanges();
改//除了主鍵列其他的都會被改變
Student s1 = new Student(){sID = 8, sAddress = "已經被改變的值"};
context.Entry<Student>(s1).State = EntityState.Modifed;
context.SaveChanges();
Set
//以下兩個東西可以畫等號
context.Student
context.Set<Student>
Linq Lambda分頁 //這種要會,之前用的存儲過程的和SQl語句的也要會,這種不會全部內容都查出來,你要什么就可以查什么 要查看里面的SQL語句可以在SQlserver中監視查看
satic List<Student> GetPageList(Func<Student,bool> whereLambda,Func<Student,Object>orderlambda,int pageSize,int pageIndex)
{
創建一個DbContext 這里創建的是context
var list = context.Student.Where(whereLambda).OrderByDescending(orderLambda).Skip((pageIndex-1)*pageSize).Take(pageSize).Select(s=>s);
return lisr.ToList();
}
Skip()//跳過多少項
Take()//要多少項
//方法調用
List<Student> list = GetPageList(s=>s.sID>5,s=>s.sID,2,2);
方法升華擴展(泛型)
satic List<T> GetPageList(Func<T,bool> whereLambda,Func<T,Object>orderlambda,int pageSize,int pageIndex) where T:calss
{
創建一個DbContext 這里創建的是context
var list = context.Set<T>().Where(whereLambda).OrderByDescending(orderLambda).Skip((pageIndex-1)*pageSize).Take(pageSize).Select(s=>s);
return lisr.ToList();
}