linq to sql 简单的增删改查例子。
简单的学习了一下linq to sql 并亲手制作了一个例子。
第一步:先创建数据库 TestLinToSql 并创建了表 table 其中包括三个字段,guid、name、id。我用的是sql2008数据库。
第二步:创建一个项目 TestLinq ,并在解决方案中增加类库 DataSql。
第三步:在 DataSql 类库中增加 LINQ to SQL 类 DataLinq.dbml。
第四步: 点击服务器资源管理器,右键添加连接把服务器的ip地址填上,确定就可以。
第五步:把需要的表拖拽到 DataLinq.dbml页面中。
结构如图:
第六步:就是去创建页面,实现增删改查的功能了。
页面加载时候的操作:
//记住要在项目中引用 System.Linq 否则会报:错误 1 类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。 DataLinqDataContext ddc = new DataLinqDataContext(); //DataLinqDataContext ddc = new DataLinqDataContext("server=10.11.43.74;database=TestLinToSql;uid=sa;pwd=sa");//重载方式连接数据库 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); this.TextBox1.Text = Guid.NewGuid().ToString(); } } private void Bind() { this.GridView1.DataSource = from p in ddc.table select p; this.GridView1.DataBind(); }
插入数据库的操作:
/// <summary> /// 新增按钮 问题:如果提示表没有主键 就把dbml中的表删除,然后在重新拖拽进去就可以。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAdd_Click(object sender, EventArgs e) { table tb = new table();//数据库实例 tb.guid = TextBox1.Text; tb.name = TextBox2.Text; ddc.table.InsertOnSubmit(tb);//插入数据库 ddc.SubmitChanges(); Bind(); }
更新数据库操作:
/// <summary> /// 更新按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnEdit_Click(object sender, EventArgs e) { table tbup = ddc.table.FirstOrDefault(p => p.guid == this.TextBox1.Text);//获取要更新字段的主键 tbup.name = TextBox2.Text;//要更新的内容 ddc.SubmitChanges(); Bind(); }
删除数据库操作:
/// <summary> /// 删除 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnDel_Click(object sender, EventArgs e) { table tbup = ddc.table.FirstOrDefault(p => p.guid == this.TextBox1.Text);//获取要更新字段的主键 ddc.table.DeleteOnSubmit(tbup);//删除语句 ddc.SubmitChanges(); Bind(); }
linq to sql 多表联合查询例子:
this.GridView1.DataSource = from p in ddc.table join b in ddc.table2 on p.guid equals b.guid //联合查询 join 相当于 inner join into g from j in g.DefaultIfEmpty() select new { guid = p.guid,name = p.name,clas = j.clas};//必须把要显示的字段全部都写在这里。
至于在开发中选择SQL的方式还是选择Linq to SQL 可以根据具体的需求和上网看看他们之间的优缺点就知道了。。