EF(常用的ORM框架)


上傳和下載.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();
}

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM