標籤:
ORM《Object Relation Mapping》
Linq To Sql:
一、建立Linq To Sql 類 :
理解上下文類: Linq To Sql 類名+context 利用上下文類可以訪問資料庫中的每一個表;
****************************************** 分類 應用*******************************************************
註: 1 info為實際引用的表名
2 在執行某一功能時都需要先將上下文類執行個體化出來。
★★★★★ ★★★★★ ★★★★★ ★★★★★ 一、查詢類 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
MyDBdataContext context= new MyDBContext();//將上下文類執行個體化
1 查詢所有並顯示
MyDBdataContext context= new MyDBContext();//將上下文類執行個體化
list<info> list = context.info.tolist(); //執行查詢操作;
DataGridView1.DataSouse = list; //將查詢到的資料顯示出來
2 單條件查詢--等值查詢
var mama = from p in context. info where p.code == "n002" select p // 查詢方式一
var mama = context.info where (p=>p.code=="n002"); //查詢方式二 lambda 運算式
dataGridview1.datasouce = mama // 送至頁面顯示;
3 單條件查詢----不等值查詢
var mama = from p in context.info where p.code !="n002" select p //法一
var mama = context.info where (p=>p.code !=n002); // 法二 lambda 運算式
var mama = context.info where( p => datatime.now - p.birthday.values.year); // 時間的提取方法
dataGridview1.datasouce = mama // 送至頁面顯示;
4 多條件查詢:
//var query = from p in _Context.Info where p.Sex == true && p.Birthday.Value.Year > 1985 select p; //法一
//var query = _Context.Info.Where(p=>p.Sex==true && p.Birthday.Value.Year>1985); 法二 lanbda 運算式
var query = _Context.Info.Where(p => p.Sex == true).Where(p=>p.Birthday.Value.Year>1985) ; //多條件邏輯與可以用鏈式運算式寫
dataGridView1.DataSource = query;
5 模糊查詢:
var mama = from p in context.info where p.name contains("張") selsect p ;// 相當於 like‘%張%‘ 模糊查詢--包含什麼字元的資訊
//var query = from p in _Context.Info where p.Name.StartsWith("張") select p; // like ‘張%‘ 模糊查詢--以什麼字元開頭的資訊
//var query = from p in _Context.Info where p.Name.EndsWith("張") select p; //like ‘%張‘ 模糊查詢--以什麼字元結尾的資訊
//var query = from p in _Context.Info where p.Name.Substring(1,1) == "張" select p;// like ‘_張%‘ 模糊查詢-- 一第幾位是什麼字元的資訊
var query = _Context.Info.Where(p => p.Name.StartsWith("張"));
6 集合操作:
var q1 = from p in _Context.Info where p.Sex== true select p;
var q2 = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);
交集 : var query = q1.Intersect(q2);
並集 : var query = q1.Union(q2);
差集 : var query = q2.Except(q1);
7 統計函數:
var query = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);
//this.Text = query.Count().ToString(); // 求數量
//this.Text = query.Sum(p=>DateTime.Now.Year - p.Birthday.Value.Year).ToString(); //求和
//this.Text = query.Average(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString();//求平均值
//this.Text = query.Max(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString() ; // 求最大值
this.Text = query.Min(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString(); // 求最小值
7 轉化操作:
var mama = from p in context.info where p.name contains "張" select p;
List<info> list = mama.ToList(); // 將查詢結果轉化為泛型集合:
info[] list = mama.ToArray(); // 將查詢結果轉化為數組;
info data = mama.tosingle(); // 將查詢結果轉化為單個對象
info data= mama.tofirst(); // 將查詢結果轉化為單個對象
8 將查詢結果 分頁操作
//每頁多少條pagesize,要找第幾頁pageno
var query = _Context.Info.Skip(2*3).Take(2); // 從查詢結果中skip(跳躍)2行 每行3條記錄 要取跳躍後的 2 行;
dataGridView1.DataSource = query;
9 特殊用法記錄
1 去除查詢中的重複語句: var mama = from p in convert.info where p.name contains "張"select p .distinct() ;
★★★★★ ★★★★★ ★★★★★ ★★★★★ 二 、添加類 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
添加操作:
MyDBdataContext context= new MyDBContext();//將上下文類執行個體化
info data = new info();// 將要添加的表格先執行個體化;
data.Code = txtCode.Text; // 進行初始化
data.Name = txtName.Text;
data.sex =Convert.Toboolean(textsex.text);
data.nation =txtNation.Text;
data.Birthday = Convert.TodateTime(textBirthday.Text);
Context.info.insertOnSubmit(data ); //告知上下文類在點擊提交的時候執行插入操作;
Context.SubmitChanges(); // 上下文提交到資料庫
★★★★★ ★★★★★ ★★★★★ ★★★★★三、刪除類 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
刪除操作
// 通過上下文類找到要刪除的對象
MyDBdataContext context= new MyDBContext();//將上下文類執行個體化
var sc = from mama in context.info where mama.Code select mama;
if(sc.count() >0)
info data = sc.first();
// 告訴上下文一下
Context.info.delectOnsubmit(data);
// 上下文類提交到資料庫
Context.SubmitChangs();
★★★★★ ★★★★★ ★★★★★ ★★★★★四 、修改類 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
修改操作
MyDBdataContext context= new MyDBContext();//將上下文類執行個體化
//找到要修改的資料
var tianjia = from mama in Context.info where p.code == txtcode.text select mama
// 修改資料
data.Name = txtName.Text;
data.Sex = Convert.ToBoolean(txtSex.Text);
data.Nation = txtNation.Text;
data.Birthday = Convert.ToDateTime(txtBirthday.Text);
// 上下文類提交到資料庫
Context.Submitchanges();
linq to sql 增刪改查