1. 程式人生 > >EF和ADO的增刪改查方法總結

EF和ADO的增刪改查方法總結

EF新增

 DbContext db=new DbContext ();

1.db.物件.Add()

db.SaveChanges()  

 

2.SqlParameter[]引數化

db.DataBase.ExecuteSqlCommand("sql語句/儲存過程",“引數”)

 

3.db.Set<物件>.Add()(不用反射的新增)

db.SaveChanges()  

 

4.db.Entry(物件).State=EntityState.Added;

db.SaveChanges()  

 

EF刪除

 

 DbContext db=new DbContext ();

 

1.db.物件.Find(id)(通過查詢的物件刪除)

  db.物件.Remove()

db.SaveChanges()  

 

2.SqlParameter[]引數化

db.DataBase.ExecuteSqlCommand("sql語句/儲存過程",“引數”)

sql引數使用@開頭

 

3.db.Set<物件>.Remove(db.物件.Find(id))

db.SaveChanges()  同時執行語句,只要一條不成功,全部不成功類似於事務

 

4.db.Entry(物件).State=EntityState.Deleted;

db.SaveChanges()  

EF修改

 

1.db.Entry(物件).State=EntityState.Modified

db.SaveChanges()

 

2.SqlParameter[]引數化

db.DataBase.ExecuteSqlCommand("sql語句/儲存過程",“引數”)

sql引數使用@開頭

 

 

EF查詢

 

 DbContext db=new DbContext ();

  1. db.物件.ToList()
  2. SqlParameter[]引數化

db.DataBase.SqlQuery<型別>(“sql語句/儲存過程”,”引數”).ToLIst()

儲存過程輸出引數

儲存過程返回的結果必須與類中的欄位對應,當多表聯查時,建立輔助類,輔助類中包含所需要的欄位,名稱與資料庫一致

 

 

ADO

Sql五大物件

SqlConnection 連線物件 連線字串

SqlCommand  命令物件

SqlDataAdapter  讀取物件 不需要開啟連線物件,不需要命令物件

查詢結果為dataTable集合

定義list集合,for進行每行遍歷

迴圈中每個欄位進行賦值

 

 

SqlDataReader  讀取物件

 

 SqlDataReader  讀取物件  和  DataSet       資料集 的比較

  1. 效能。

DataSet中的資料完全儲存在記憶體中,所以會佔用記憶體。但是通常情況下DataReader讀出的資料例項化以後也是在記憶體中的,所以兩者沒有多大區別。但是,當資料量極大的情況下,使用DataSet時,不論是你分頁還是不分頁,它的效率之低,和SqlDataReader相比都是不可同日而語的,尤其是你在分頁情況下,使用DataReader可以只讀所需資料,網路流量可以很小,但是DataAdapter還是必須全部讀出,網路流量你很難優化,除非你自己去深入控制。

  1. 方便。

DataSet資料儲存在記憶體中,可以用Adapter一次性填充,乍看方便不少,其實不然。由於dataset中的資料都是弱型別的,你用的時候不得不大量使用索引、強制型別轉換、型別轉換來完成讀取任務,麻煩而且易錯。從這方便來說,在讀取資料時那麼一點方便是不可取的。

  1. 離線。

DataSet是離線的,資料讀取後可以關閉資料庫連線,但是DataReader則必須在使用資料的時候一直連線資料庫。現在的專案中大多使用實體(Entity)來儲存從DataReader中讀取的資料,也能實現離線的目的,雖然麻煩一點,但是後期很方便使用。 

 

 

 

Ado引數化

 

 

執行速度快

 

ADO呼叫儲存過程