文章出處

1.Add

 1 #region 1.1 新增學生信息(定義成Int類型,返回受影響的行數)
 2         /// <summary>
 3         /// 新增學生信息
 4         /// </summary>
 5         /// <param name="stu"></param>
 6         /// <returns></returns>
 7         public int Add(Studnet stu)
 8         {
 9             //把對象加入到EF上下文中,并獲取對象的狀態管理對象
10             DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);
11 
12             //把狀態改為Added
13             //要引入System.Data.Entity
14             entry.State = System.Data.EntityState.Added;
15 
16             //保存到數據庫
17            return  db.SaveChanges();
18            
19         }
20         #endregion

2.Delete

2.1根據用戶ID來刪除

 1 #region 2.0 根據學生的ID來刪除
 2         /// <summary>
 3         /// 根據學生的ID來刪除
 4         /// </summary>
 5         /// <param name="id"></param>
 6         /// <returns></returns>
 7         public int Delete(int id)
 8         {
 9             Studnet stu = new Studnet() { s_ID = id };
10             //刪除傳過來的ID
11             //DbEntityEntry<Studnet> stu= db.Studnets.Where(s => s.s_ID == id) as DbEntityEntry<Studnet>;
12             DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);
13             //把狀態改為deleted
14             entry.State = System.Data.EntityState.Deleted;
15 
16             //保存到數據庫
17             return db.SaveChanges();
18         } 
19         #endregion

2.2根據條件來刪除

其實就是在where方法中傳入了一個lambda表達式,而lambda表達式本質上就是一個匿名函數。

 1 #region 2.1 根據條件來刪除
 2         /// <summary>
 3         /// 根據條件來刪除
 4         /// (給出任意條件,然后刪除)
 5         /// </summary>
 6         /// <returns></returns>
 7         public int DeleteBy(System.Linq.Expressions.Expression<Func<Studnet, bool>> deleteWhere)
 8         {
//查詢出要刪除的數據
9 List<Studnet> stuList = db.Studnets.Where(deleteWhere).ToList(); 10 //循環刪除 11 stuList.ForEach(u => db.Studnets.Remove(u)); 12 13 //保存到數據庫 14 return db.SaveChanges(); 15 16 } 17 #endregion

3.Modify

 1 #region 3.0 修改
 2         /// <summary>
 3         /// 修改
 4         /// 要告訴程序,哪個屬性改了。這里添加一個可變參數數組
 5         /// </summary>
 6         /// <param name="stu"></param>
 7         /// <returns></returns>
 8         public int Modify(Studnet stu, params string[] parmeters)
 9         {
10             //把對象加入到EF容器,并獲取狀態管理對象
11             DbEntityEntry<Studnet> entry = db.Entry<Studnet>(stu);
12 
13             //對象的狀態改為Unchanged
14             entry.State = System.Data.EntityState.Unchanged;
15             foreach (string parms in parmeters)
16             {
17                 entry.Property(parms).IsModified = true;
18             }
19 
20             return db.SaveChanges();
21         } 
22         #endregion

測試修改:

 1  /// <summary>
 2         /// 修改的測試
 3         /// </summary>
 4         public Student()
 5         {
 6             //把Id為1的學生的名字改為xxxxxxxxxxx
 7             Studnet stu = new Studnet() { s_ID=1,s_Name="xxxxxxxxxxx"};
 8             //改哪個實體,改哪個屬性
 9             this.Modify(stu, "s_Name");
10         }
Test Modify

測試刪除:

1 /// <summary>
2         /// 刪除的測試
3         /// </summary>
4         public Student()
5         {
6          
7             this.DeleteBy(u => u.s_ID == 1);
8         }
Test Delete

4. Query

4.1根據條件查詢

 1 #region 4.1  根據條件查詢
 2         /// <summary>
 3         /// 根據條件查詢
 4         /// 查詢的結果一般都是集合,所以返回值類型為泛型集合
 5         /// </summary>
 6         /// <returns></returns>
 7         public List<Studnet> GetStudentList(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery)
 8         {
 9             return db.Studnets.Where(whereQuery).ToList();
10         } 
11         #endregion

4.2根據條件查詢,查詢完之后,還要分組。

 1 /// <summary>
 2         /// 根據條件查詢,查詢玩之后,還要分組
 3         /// </summary>
 4         /// <param name="whereQuery"></param>
 5         /// <param name="QroupByQuery"></param>
 6         /// <returns></returns>
 7         public List<Studnet> GetStudentList<Tkey>(System.Linq.Expressions.Expression<Func<Studnet, bool>> whereQuery, System.Linq.Expressions.Expression<Func<Studnet, Tkey>> QroupByQuery)
 8         {
 9             return db.Studnets.Where(whereQuery).OrderBy(QroupByQuery).ToList();
10         }

 

測試根據條件查詢:

1  public Student()
2         {
3             this.GetStudentList(u => u.s_ID == 1 && u.s_Sex == "");
4 
5         }
根據條件查詢

測試根據條件查詢,查詢完之后再根據條件分組:

1  public Student()
2         {
3            
4             this.GetStudentList(u => u.s_ID >= 1, u => u.s_Sex);
5         }
查詢并分組

4.3分頁查詢

 1 #region 4.2 分頁查詢
 2         /// <summary>
 3         /// 分頁查詢
 4         /// 先排序,再分頁
 5         /// </summary>
 6         /// <param name="pageIndex">頁碼</param>
 7         /// <param name="pageSize">頁容量</param>
 8         /// <param name="orderLambda">排序條件</param>
 9         /// <returns></returns>
10         public List<Studnet> GetPagedList<Tkey>(int pageIndex, int pageSize, Expression<Func<Studnet, Tkey>> orderLambda)
11         {
//分頁:一定要注意,Skip之前一定要OrderBy,因為到時候會生成一個RowNum的分頁查詢(通過SQL ServerProfier偵聽到的)
12 return db.Studnets.OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); 13 } 14 #endregion

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()