利用LinQ技術和lambd表達式進行增刪改查
數據庫訪問技術:
ADO.net
EF框架
LinQ
LinQ是一種高集成化的數據庫訪問技術,他將數據庫中的表映射成程序中的類
數據庫的表名變成類名
數據庫的列名變成字段名/屬性名
所有的操作都是通過LinQ自動生成的一個上下文對象來進行操作的,這個對象名是LinQ的名字+"DataContext" ,一個數據庫對應一個LinQ
1、創建LinQ
在項目上右鍵,添加一個LinQ to SQL
然後點擊服務器資源管理器,選擇小插頭樣式的連接到數據庫
正確填寫需要連接的數據庫信息,點擊確定,然後在左邊就可以看到數據庫結構,將需要的表直接拖動到界面上即可
2、去除數據訪問類的簡便開發方式
使用LinQ時,可以不寫數據訪問類,直接在程序用調用,這樣既省時間,也節省內存
使用方法:using(實例化上下文對象){}
using (Data0928DataContext con = new Data0928DataContext())
{
Repeater1.DataSource = con.Users.ToList();
Repeater1.DataBind();
}
3、查詢、條件查詢
普通查詢:查詢全部只需一句代碼
con.Users.Tolist()
條件查詢:需要使用Lambda表達式
註意:不管結果有幾條數據,返回的都是集合,使用FirstOrDefault取第一個值,並且如果為空不會報錯,會返回null
Users u = con.Users.Where(r => r.ids == ids).FirstOrDefault();
4、刪除
刪除方法需要一個對象,需要先通過條件查詢查出此對象才能進行刪除,並且需要SubmitChanges方法才是正式執行方法
con.Users.DeleteOnSubmit(con.Users.Where(r => r.ids == ids).FirstOrDefault()); con.SubmitChanges();
5、修改
修改不需要想ADO.net中那樣需要寫很長的字符串,只需要查出需要修改的對象,對這個對象的屬性直接修改,修改完畢執行SubmitChanges方法提交即可
Users u = con.Users.Where(r => r.UserName == username.Text).FirstOrDefault();
u.PassWord = password.Text;
u.NickName = nickname.Text;
if (RadioButton1.Checked)
u.Sex = true;
else
u.Sex = false;
u.Birthday = Convert.ToDateTime(birthday.Text);
u.Nation = DropDownList1.SelectedValue;
u.Class = DropDownList2.SelectedValue;
try
{
con.SubmitChanges();
Response.Redirect("Index.aspx");
}
catch {
Label1.Text = "修改失敗!";
}
6、屬性擴展
VS允許用戶對LinQ生成的實體類進行擴展,只需要創建一個跟實體類相同名的類,寫上partial,即可在此類裏面寫自己需要的屬性。
直接在LinQ生成的文件中寫也有效,但是如果對LinQ執行任何修改,哪怕只是拖動一下界面的表位置,也會導致代碼重新生成,這樣自己寫進去的屬性擴展就會消失,所以只能通過新建一個同名partial類進行添加
public partial class Users
{
public string SexStr
{
get
{
string end = "<無數據>";
if (this._Sex != null)
{
end = Convert.ToBoolean(this._Sex) ? "images/1.png" : "images/0.png";
}
return end;
}
}
public string NationName
{
get
{
return Nation1.NationName;
}
}
public string ClassName
{
get
{
return Class1.ClassName;
}
}
}
利用LinQ技術和lambd表達式進行增刪改查