LINQ,语言集成查询(Language Integrated Query)
是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
一、创建 LINQ
在项目下创建 linq to SQL 类,
将相应的数据库表拖入即可
二、LINQ 的属性拓展
对 LINQ 进行属性扩展时 ,一定要在外部新建类文件进行扩展
using System;using System.Collections.Generic;using System.Linq;using System.Web;////// Users 的摘要说明/// public partial class Users{ public string SexStr { get { return Convert.ToBoolean(_Sex) ? "男" : "女"; } } public string BirStr { get { return Convert.ToDateTime(_Birthday).ToString("yyyy年MM月dd日"); } //DateTime? 型,带问号,最好转换一下 } public string Nationn { get { return Nation1.NationName; } } //从另一个表中抓取返回值}
-- 有主外键关系的扩展,可直接抓取
三、查询全部,数据展示
1、创建 linq 数据库文件的 数据库上下文上下文对象
UsersDataClassesDataContext con = new UsersDataClassesDataContext( );
-- UsersDataClassesDataContext 创建linq 数据库是创建的类
2、通过上下文对象获取数据,绑定数据
list<Users> = con.Users .ToList ();
-- con.Users 通过上下文对象获取 Users 中的全部对象
-- 通过 con 获取的对象是 linq 类型, .Tolist() 转换成集合
if (!IsPostBack) { using (UsersDataClassesDataContext con=new UsersDataClassesDataContext() ) { Repeater1.DataSource =con.Users .ToList (); Repeater1.DataBind (); } }
-- using 编写一个作用域,括号内创建一个上下文对象
-- 创建的对象只在花括号里使用,走完花括号就不存在了
--using 这个方法,每次在数据库开启时都是全新的对象
这个对象用完后会自动消失,不消耗内存。
四、添加
//提交 void Button1_Click(object sender, EventArgs e) { Users u = new Users(); u.Username = TextBox1.Text; u.Password = p1.Text; u.Nickname = TextBox2.Text; u.Sex = RadioButtonList1.Items[0].Selected; u.Birthday = Convert.ToDateTime(Text_Bir.Text); u.Nation = Dr4.SelectedValue; using (UsersDataClassesDataContext con = new UsersDataClassesDataContext ()) { con.Users.InsertOnSubmit(u); //u 要添加的数据对象 con.SubmitChanges(); } Response.Redirect("zhanshi.aspx"); }
con.Users.InsertOnSubmit(u);
( 上下文对象 . 表 . 方法 ) -- 准备添加,
con.SubmitChanges();
-- 提交所有数据
五、删除
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class delete : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string id = Request["i"]; using (UsersDataClassesDataContext con = new UsersDataClassesDataContext()) { //根据主键值查询出对应的这个对象 Users us = con.Users.Where(r => r.Ids.ToString() == id).FirstOrDefault(); if (us != null) { con.Users.DeleteOnSubmit(us); con.SubmitChanges(); } Response.Redirect("zhanshi.aspx"); } }}
Users us = con.Users.Where( r => r.Ids.ToString() == id ).FirstOrDefault(); // lambda 表达式
-- FirstOrDefault() : 根据前面查询的,取第一条,如果没有返回 null
-- r :表示任何一行
-- => :固定格式
con.Users.DeleteOnSubmit(us);
con.SubmitChanges();
六、修改
//提交按钮 void Button1_Click(object sender, EventArgs e) { string st = Request["i"]; using (UsersDataClassesDataContext con = new UsersDataClassesDataContext()) { Users u = con.Users.Where(r => r.Ids.ToString() == st).FirstOrDefault(); if (u != null) { if (p1.Text.Length > 0) u.Password = p1.Text; u.Nickname = TextBox2.Text; u.Sex = RadioButtonList1.Items[0].Selected; u.Birthday = Convert.ToDateTime(Text_Bir.Text); u.Nation = Dr4.SelectedValue; con.SubmitChanges(); Response.Write(""); Response.Redirect("zhanshi.aspx"); } } }
-- con.SubmitChanges();
各修改数据准备过程就是准备修改过程,不用再用上下文对象来准备。直接一把提交