LINQ TO SQL技术
linq to sql技术使用方便,不会被淘汰原因:第一,考虑到 兼容性问题,微软绝对不会把Linq to SQL从.NET Framework中拿掉的,所以你不用怕现在用 Linq to SQL写的程序以后不能运行了。第二,即使微软不更新Linq to SQL了,但它现在的功 能,已经足够满足我们日常需要了,相比重量级的Entity Framework,如果你只是做一个中小 型项目,并且很注重开发效率和学习曲线,所以选择可爱的Linq to SQL是最佳选择。下面让我来说说Linq to SQL的几大功能实现。
1、建立数据库
在使用Linq to SQL前,我们要将相应的数据库建好。在这个Demo中,使用的数据 库是SQLServer 2008。
我们首先建立一个叫的数据库MyDatabase,及两个数据表:MyTable1、MyTable2和MyTable3,分别表示 公告的分类和公告,建立方法不再赘述。至于两个表的具体字段请参看图1。
图一
2、建立Linq to SQL Classes文件
数据建好后,我们需要建立Linq to SQL Classes文件。这种文件是Linq to SQL框架的主要 文件,后面自动生成的实体类和ORM代码都存在于这个文件中。
我们打开VS2010,新建一个C# Class Labrary工程,名称为“浏览添加删除修改”,建好后在 工程上单击右键,选择“Add”->“New Item”,在文件类型中选择“Linq to SQL 类”,文件名命名为“DataClasses2.dbml”,如图2所示。
图二
3、新建数据库连接和修改数据库连接
以下图片为修改数据库连接,因为我在之前就已经把这个数据库给连接上了的,现在第二次进入则修改一下连接就可以,如果是新建的一个LINQ TO SQL的话,那么就得新建数据库连接了,要不我们所需要有的步骤一中MyTable1、2、3就不能够拉进来了。
图三
4、使用Linq to SQL访问数据库
我们首先新建一个工程。为了简单起见,我们就直接建立一个C# Console Application测试 我们的ORM吧。将这个工程命名为 浏览添加删除修改。当然,建好工程后,不要忘了添加对工 程“浏览添加删除修改”的引用,还要添加对“System.Data.Linq”命名空间的引用。
4.0头文件引用代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Data.Linq; 10 using System.Data.SqlClient;
4.1添加功能
1
1 DataClasses1DataContext db = new DataClasses1DataContext(); 2 MyTable2 t = new MyTable2(); 3 t.学号 = textBox1.Text.Trim().ToString(); 4 t.姓名 = textBox2.Text.Trim().ToString(); 5 6 //string 性别 = textBox3.Text.Trim().ToString(); 7 //string 出生日期 = Convert.ToDateTime(dt).ToString("yyyyMMdd"); 8 //t.出生日期 =textBox4.Text.Trim().ToString(); 9 //t.性别 = textBox3.Text.Trim().ToString(); 10 t.学院编码 = textBox5.Text.Trim().ToString(); 11 t.成绩 = Convert.ToInt32(textBox6.Text.Trim()); 12 db.MyTable2.InsertOnSubmit(t); 13 db.SubmitChanges(); 14 //Contacts c1 = new Contacts(); 15 16 //c1.ContactName = txtNewContactName.Text; 17 18 //c1.State = txtNewState.Text; 19 //ltemp.Add(c1); 20 ////dc.Contacts.InsertOnSubmit(c1); 21 //dc.SubmitChanges();
4.2预览功能
1 DataClasses1DataContext context = new DataClasses1DataContext(); 2 var myQuery1 = 3 from table2 in context.MyTable2 4 select new { 学号 = table2.学号, 学生姓名 = table2.姓名, 性别 = table2.性别.ToString(), 出生年月日 = table2.出生日期.ToString(), 学校编号 = table2.学院编码.ToString(), 成绩 = table2.成绩 }; 5 if (myQuery1.Count() > 0) 6 { 7 dataGridView1.DataSource = myQuery1; 8 }
4.3修改功能
1 DataClasses1DataContext db = new DataClasses1DataContext(); 2 var query = from table in db.MyTable2 3 where table.学号 == textBox1.Text.Trim().ToString() 4 select table; 5 if (query.Count() > 0) 6 { 7 var q1 = query.First(); 8 q1.学号 = textBox1.Text.Trim().ToString(); 9 q1.姓名 = textBox2.Text.Trim().ToString(); 10 //q1.性别 = textBox3.Text.Trim().ToString(); 11 //string 出生日期 = Convert.ToDateTime(dt).ToString("yyyyMMdd"); 12 q1.学院编码 = textBox5.Text.Trim().ToString(); 13 q1.成绩 = Convert.ToInt32(textBox6.Text.Trim()); 14 db.SubmitChanges(); 15 }
4.4删除功能
1 DataClasses1DataContext db = new DataClasses1DataContext(); 2 var query = from table in db.MyTable2 3 where table.学号 == textBox1.Text.Trim().ToString() 4 select table; 5 if (query.Count() > 0) 6 { 7 var q1 = query.First(); 8 db.MyTable2.DeleteOnSubmit(q1); 9 db.SubmitChanges(); 10 }
4.5点击datagridView中一行显示其中数据在lable控件
1 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 2 { 3 4 DataRow row; 5 row = dt.Rows.Find(dataGridView1.CurrentRow.Cells[0].Value.ToString()); 6 textBox1.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[0].Index].Value.ToString(); 7 textBox2.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[1].Index].Value.ToString(); 8 //textBox3.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[2].Index].Value.ToString(); 9 //textBox4.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[3].Index].Value.ToString(); 10 //textBox5.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[4].Index].Value.ToString(); 11 textBox6.Text = this.dataGridView1.CurrentRow.Cells[this.dataGridView1.Columns[5].Index].Value.ToString(); 12 }