linq如果不能用的話 重灌一下vs就好了
linq,語言整合查詢(language integrated query)是一組用於c#和visual basic語言的擴充套件。它允許編寫c#或者visual basic**以查詢資料庫相同的方式操作記憶體資料。
是一種高整合化的資料庫訪問技術。
他與ado.net區別就是 ado.net是最基礎的 linq是最高端的;
實用linq 不會用資料庫,sql語句不會寫也可以訪問資料庫;
改變的是資料訪問層;
先做乙個table 共7列,再放乙個repeater迴圈繫結
準備工作完成後,在解決方案裡新建項,找到linq to sql
檔案格式是.dbml
命名使預設名不懂,想要操作那個資料庫就把資料庫名寫在前面。
建立完成來到這個介面,點選這個資源管理器,
左邊會出現乙個視窗,點選帶+號的那個按鈕
然後會在彈出乙個視窗,填寫資料庫資訊,選擇的時候就會發現只能選擇乙個庫。如果使用者名稱和密碼填寫錯誤是連不上資料庫的
連線之後何在資料庫裡是一樣的列表。建立實體類只需要把你需要的那個表拖到空白區域就可以了。他還會顯示出表之間的外來鍵關係
建好的類就是這樣,實體類在.cs裡面,這裡面的東西不要改,沒有情況會讓你改這裡面的內容。
在裡面找到了成員變數,這裡有個partial 代表這是類的一部分,所以可以屬性拓展;
接下來建立資料訪問類:
建立乙個類,類名與表明一致;
在類裡面輸入linq的名稱,例項化出來;
這個東西叫做 資料庫上下文;
寫乙個方法
這樣就完成了對資料庫users表的所有資料查詢, 通過資料庫上下文con找到users表 轉換成list格式,放到ulist裡面,在return出去。
更簡單的也可以直接在後台裡面這樣寫:
using是編寫乙個作用域,小括號後面建立乙個物件,是一種很好用的物件銷毀的方式。
這裡建立的物件con只能在花括號裡面用,走完花括號就會銷毀掉。
資料拓展
屬性拓展不能寫在linq的.cs檔案裡,因為只要linq類稍微有一點變化,哪怕是表移動了一點,他就會重新整理資料。
這裡的型別是bool?型,還有其他?型,他和bool型區別就是乙個可以為null乙個不可以;
實用的時候必須吧?型裝換成普通型別;
所以屬性拓展要再建乙個類,類名必須與表明一制。記得加上partial , 裡面再寫屬性拓展就可以了。要return的屬性通過下劃線可以點出來。
如果是有外來鍵關係的表可以直接點出來。
準備幾個textbox和乙個按鈕
後台 按鈕的點選事件
新增資料當然還是用資料庫上下文,
新增資料要用這兩句,第一句con.users.insertonsubmit(u) 是乙個新增資料方法,括號內新增乙個users型別的資料,但只是準備新增,第二句con.submitchanges();才是完成修改。新增資料。
刪除需要新建乙個web,後台接收一下傳遞過來的ids。
根據這個ids查詢出對應的物件,刪除這個物件;
然後彈出乙個提示,告訴使用者刪除了沒。
返回頁面;
這裡就需要ambda表示式;
users u = con.users.where( r => r.ids.tostring() == 接收的id ).firstordefault();
這就是基本格式,r可以換成任意字母, =>就是基本格式 r點 就可以出現每一列的名,然後判斷**換格式);
查詢出來是個集合 取值用.firstordelault() 第一條或者[不存在,不執行,為空]
if(u != null)
con.users.deleteonsubmit(u);繫結需要刪除的物件
con.submitchanges();修改
修改資料
using (usersdataclassesdatacontext con = new usersdataclassesdatacontext())- con.submitchanges();各修改資料準備過程就是準備修改過程,不用再用上下文物件來準備。直接一把提交}
再重複一下
使用linq時要注意:
1.建立linq連線後生成的dbml檔案不要變動,生成的表不要碰,拖動表也會造成資料庫連線發生變動,需要重新儲存.
2.屬性拓展的使用:新增乙個新的類,不要在dbml中新增屬性拓展,一旦資料庫變動,屬性拓展類就會失效.
3.使用linq獲取的資料都是?int,?string等?資料型別,意思是也有可能為空,這時候運算元據需要先把資料型別轉化成int,string等資料型別.
在這裡運算元據庫用到了lambda表示式,是一種匿名函式,使用lambda表示式自動帶有防攻擊,不需要在使用parameter了.
C 3 0 初步認識LINQ
linq基本概念 linq language integrated query 是language integrated query的簡稱,它是整合在.net程式語言 例如 c vb.net等 中的一種特性,目的是為.net framework提供更加通用和便利的資訊查詢方式,並且它對資料來源提供了...
Linq之Lambda表示式初步認識
寫在前面 匿名方法 乙個例子 lambda 定義乙個例子 總結參考文 章匿名方法顧名思義,是沒有名字的方法,但是仍有方法體,仍能幹活。在很多地方可能你都見過它,比如js中,用的最多!看看msdn給的說法 在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而...
LINQ學習(一) LINQ初認識
一 簡介 1 什麼是linq?linq language integrated query 語言繼承查詢。linq是一組語言特性和api,可以使用統一的方式編寫各種查詢。用於儲存和檢索來自不同資料來源的資料,從而消除了程式設計語音和資料庫之間的不匹配,以及為不同型別的資料來源提供單個查詢介面。lin...