Linq
高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名
数据库数据访问,能大大减少代码量。
(1)Linq创建
添加LINQ to SQL类,类名需与要连接的数据库名一样
Linq文件是dbml结尾,一个数据库对应一个Linq文件
(2)数据库连接
打开服务器资源管理器,点击下图黄圈内按钮,连接到数据库,弹出添加连接对话框,填写服务器名(.),选择使用什么身份验证,然后您要连接的数据库,然后将您要用的数据库拉到类中。
(3)数据扩展
新建一个部分类(关键字:partial),例如User
1 public string SexStr 2 { 3 get 4 { 5 string end = "<暂无>"; 6 if (this._Sex != null) 7 { 8 end = Convert.ToBoolean(this._Sex) ? "男" : "女"; 9 } 10 return end; 11 } 12 } 13 public string NationName 14 { 15 get 16 { 17 return this.Nation1.NationName; 18 } 19 } 20 public string BirStr 21 { 22 get 23 { 24 string end = "<暂无>"; 25 if(this._Birthday!=null) 26 { 27 end = Convert.ToDateTime(this._Birthday).ToString("yyyy年MM月dd日"); 28 } 29 return end; 30 } 31 }
(4)增删改查
首先实例化:
1 WebDataContext con = null;//Web为建的Linq类名 2 public UserData() 3 { 4 con = new WebDataContext(); 5 }
一、查所有
1 public List<User> Select() 2 { 3 return con.User.ToList(); 4 } //User为对象名,即表名,下同
二、添加
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表达式,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(); }