1. 程式人生 > 其它 >EF Code First 兩表連線、顯示、分頁、查詢、下拉框

EF Code First 兩表連線、顯示、分頁、查詢、下拉框

一、什麼是日誌?

1、文字型別的-將當前時間+方法名稱+引數+錯誤資訊 列印到文本當中

2、資料表類的-將當前時間+方法名稱+引數+錯誤資訊 新增到資料表當中

3、當前方法名稱+引數+時間

4、作用:

二、怎麼讓兩表連線

1、在外來鍵欄位上方新增外來鍵關鍵字 語法: [ForeignKey("表名")]

2、在外間欄位下方新增一個導航屬性例如 “可以根據當前學生 導航到所在的班級” 語法:“修飾符 表名 自定義名稱 {get;set;}”

三、EF 顯示

1.首先例項化上下文

 //例項化上下文
StudentDbContext db = new StudentDbContext();//例子

2.定義方法 返回值型別是LIst<>集合,

public List<類名> 方法名稱()

1).單表顯示

public List<Student> Show()
{
return db.Students.ToList();//轉換成list集合
}

2).兩表以上顯示

 IQueryable<Student> query = db.Students.Include("NClass");//例子
IQueryable<>介面 繼承IEnumerable<T>介面 返回列舉型別
Include 類似 join

四、實現查詢

1.首先傳入引數

例子:
public List<Student> PageShow(string sname ,int? nid)
引數型別和資料表裡的型別保持一致
數值型別 可以賦予預設值也可以預設為空

2.拼接條件查詢語句

  例子:
//判斷學生姓名非空
if (!string.IsNullOrEmpty(sname))
{
//Contains 包含
query = query.Where(u => u.SName.Contains(sname));
}
//判斷班級
if (nid!=null)
{
query = query.Where(u => u.NId == nid);
}

五、實現分頁效果

1.首先引數

 例子:
public List<Student> PageShow(out int totalcount, out int totalpage,int pageindex=1,int pagesize = 3)
輸出引數
totalcount 總條數
totalpage 總頁數
pageindex 當前頁 賦予初始值
pagesize 頁大小 賦予初始值

2.獲取總條數和總頁數

 例子:
totalcount = query.Count(); //總條數
totalpage = Convert.ToInt32(Math.Ceiling(totalcount * 1.0 / pagesize)); //總頁數
獲取總頁數的公示: (總條數*1.0/頁大小) 在C#裡整數除以整數得到的還是整數,所以乘以個小數
注:獲取到的總條數是小數要向上取整並轉換成整數型別

3.拼接分頁語句

例子:
return query.OrderBy(u => u.SId).Skip((pageindex - 1) *pagesize).Take(pagesize).ToList();
OrderBy 隨意欄位進行排序,建議用ID
Skip 跳過多少條
Take 顯示多少條

六、下拉框

  例子:
public List<NClass> LoadClass()
{
return db.NClass.ToList();//返回list集合
}
返回型別也是List<>集合,直接ToList()查詢顯示全部欄位

七、顯示+分頁+查詢控制器

例子:
public ActionResult PageShowStudent(string sname,int? nid,int pageindex =1,int pagesize =3)
{
int totalcount;
int totalpage;
var query = dal.PageShow(out totalcount, out totalpage,sname,nid,pageindex, pagesize);
var list = new StaticPagedList<Student>(query, pageindex, pagesize, totalcount);
return View(list);
}
引數和後臺引數一樣定義輸出引數並傳入方法
使用PagedList控制元件進行分頁,PagedList控制元件自動計算總頁數不用傳入總頁數
使用PagedList控制元件一定要引用名稱空間
using PagedList;
using PagedList.Mvc;
注:引數賦予初始值的一定要在未賦初始值的後面

六、下拉框控制器

 例子:
public void loadClass()
{
ViewBag.nid = new SelectList(dal.LoadClass(), "NId", "CName");
}
使用ViewBag傳值,只需傳入ID和名稱