
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; /// <summary>
/// Users 的摘要说明
/// </summary>
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[].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 > )
u.Password = p1.Text; u.Nickname = TextBox2.Text;
u.Sex = RadioButtonList1.Items[].Selected;
u.Birthday = Convert.ToDateTime(Text_Bir.Text);
u.Nation = Dr4.SelectedValue; con.SubmitChanges(); Response.Write("<script>alert('修改成功!')</script>");
Response.Redirect("zhanshi.aspx"); } } }
修改 -- 修改按钮后台代码
-- con.SubmitChanges();
各修改数据准备过程就是准备修改过程,不用再用上下文对象来准备。直接一把提交