Linq
高集成化的數據訪問類,它會自動映射數據庫結構,將表名完整映射成為類名,將列名完整映射成字段名
數據庫數據訪問,能大大減少代碼量。(反正最后結果就是不用寫ado.Net那一套增刪改查,有一套封裝好的方法直接點就行了)
(1)Linq創建
添加LINQ to SQL類,類名需與要連接的數據庫名一樣
Linq文件是dbml結尾,一個數據庫對應一個Linq文件,比如送你要連接data0720這個數據庫,linq的名字也取data0720
(2)數據庫連接
打開服務器資源管理器,點擊下圖黃圈內按鈕,連接到數據庫,彈出添加連接對話框,填寫服務器名(.),選擇使用什么身份驗證,然后您要連接的數據庫,然后將您要用的數據庫拉到類中。(這里就相當於ado.Net里的連接語句)
(3)數據擴展
新建一個部分類(關鍵字:partial),例如User
public string SexStr { get { string end = "<暫無>";//只是從嚴謹的角度講,數據庫里不一定填寫,數據創建時是not null的話大概就不用寫了吧... if (this._Sex != null) { end = Convert.ToBoolean(this._Sex) ? "男" : "女"; } return end; } } public string NationName { get { return this.Nation1.NationName;//這里這個Nation1是因為自動生成時重名而導致的。
//這里分開寫的話就是 Nation n= this.Nation1; return n.NationName; } //這個數據庫里的中User表中的Nation被Nation表約束,根據主外鍵關系可以不用再單獨寫查詢方法(當然寫也可以,親測)
}
public string BirStr
{
get {
string end = "<暫無>";
if(this._Birthday!=null)
{
end = Convert.ToDateTime(this._Birthday).ToString("yyyy年MM月dd日");
} return end;
}
} User數據擴展
(4)增刪改查
首先實例化:
WebDataContext con = null;//Web為建的Linq類名(也就是數據庫的名字,因為他倆名字一樣) 2 public UserData() 3 { 4 con = new WebDataContext(); 5 }
一、查所有
public List<User> Select() { return con.User.ToList(); } //User為對象名,即表名,下同。這里相當於遍歷了Users表里的所有數據添加進一個泛型集合里
二、添加
1 public void Insert(User u) 2 { 3 con.User.InsertOnSubmit(u); 4 con.SubmitChanges();//執行了這句話才完成了對數據庫數據的變更 5 }
三、查一條
public User Select(string uname) { return con.User.Where(r => r.UserName == uname).FirstOrDefault();//lamdba表達式這里就可以理解為是一個查詢語句,where之后是查詢條件,r就是個代號,可以隨便起 }
四、刪除
public void Delete(string uname) { //1先將對象查出來 User u = con.User.Where(r => r.UserName == uname).FirstOrDefault(); //2刪掉 if (u != null) { con.User.DeleteOnSubmit(u); con.SubmitChanges(); } }
五、修改
public void Update(User u) { User uuu = con.User.Where(r => r.UserName == u.UserName).FirstOrDefault();//先查后改 if (uuu != null) { uuu.PassWord = u.PassWord; uuu.NickName = u.NickName; uuu.Sex = u.Sex; uuu.Birthday = u.Birthday; uuu.Nation = u.Nation; } con.SubmitChanges(); }