数据库访问技术:
ADO.net
EF框架
LinQ
LinQ是一种高集成化的数据库访问技术,他将数据库中的表映射成程序中的类
数据库的表名变成类名
数据库的列名变成字段名/属性名
所有的操作都是通过LinQ自动生成的一个上下文对象来进行操作的,这个对象名是LinQ的名字+"DataContext" ,一个数据库对应一个LinQ
去除数据访问类的简便开发方式
使用LinQ时,可以不写数据访问类,直接在程序用调用,这样既省时间,也节省内存
使用方法:using(实例化上下文对象){}
using (Data0928DataContext con = new Data0928DataContext())
{
Repeater1.DataSource = con.Users.ToList();
Repeater1.DataBind();
}
查询、条件查询
普通查询:查询全部只需一句代码
con.Users.Tolist();
条件查询:需要使用Lambda表达式
注意:不管结果有几条数据,返回的都是集合,使用FirstOrDefault取第一个值,并且如果为空不会报错,会返回null
Users u = con.Users.Where(r => r.ids == ids1).FirstOrDefault();
删除
删除方法需要一个对象,需要先通过条件查询查出此对象才能进行删除,并且需要SubmitChanges方法才是正式执行方法
con.Users.DeleteOnSubmit(con.Users.Where(r => r.ids == ids1).FirstOrDefault());
con.SubmitChanges();
修改
修改不需要想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 = "修改失败!";
}
属性扩展
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/man.png" : "images/woman.png";
}
return end;
}
}
public string NationName
{
get
{
return Nation1.NationName;
}
} public string ClassName
{
get
{
return Class1.ClassName;
}
}
}