详解在ASP.NET中用LINQ实现数据处理
- 个人认为学习LINQ法就是通过实例来学习。光看书本上的理论效率是很慢的。我将作一个简单的web应用程序,实现对数据的增删改操作。用到大家都熟悉的Northwind数据库。
一.引用命名空间
System.Data.Linq
System.Data.Linq.Mapping (需要在项目中先引用System.Data.Linq)
二.为数据库表创建实体类
Table(Name="Employees")] public class Employee { [Column(IsDbGenerated=true,IsPrimaryKey=true)] public int EmployeeID { get; set; } [Column(Name="FirstName",DbType="varchar(20)")] public string FirstName { get; set; } [Column(Name = "LastName", DbType = "varchar(20)")] public string LastName { get; set; } }
常用的属性声明,可以很好的描述表中字段的属性:
Name: 字段的名称
DbType: 字段的数据类型
IsDbGenerated: 是否自动生成
CanBeNull: 字段是否为空
Storage: 保存数据的类字段名
三.创建一个强类型的数据环境
我们的数据库系统可能会和多种类型的数据源打交道,所以应该使我们的程序有和数据源进行创建连接的能力。这里我们将创建的NorthwindDb类继承DataContext基类。DataContext类表示LINQ to SQL 框架的主入口点。
其中有相关的处理LINQ to SQL的类,方法等。
public class NorthwindDb:DataContext { public NorthwindDb(string connectionString):base(connectionString) { } public Table Employee; }
四.创建Web From
首先为GridView绑定数据
private void BindGridView(string criteria) { string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; NorthwindDb db = new NorthwindDb(strConn); IEnumerable results; if (criteria == string.Empty) { results=db.Employee.ToArray(); } else { results = (from c in db.Employee where c.FirstName.Contains(criteria) select c).ToArray(); } GridView1.DataSource = results; GridView1.DataBind(); }
搜索按钮只需将参数传进去即可BindGridView(TextBox1.Text);
如果选中了GridView中的某一行,则需要将选中的数据绑定到DetailsView 中进行编辑使用。
private void BindDetailsView() { int employeeID = (int)GridView1.SelectedValue; string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; NorthwindDb db = new NorthwindDb(strConn); var results = from emp in db.Employee where emp.EmployeeID == employeeID select emp; DetailsView1.DataSource = results; DetailsView1.DataBind(); } protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e) { GridView1.SelectedIndex = e.NewSelectedIndex; } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { int employeeID = (int)GridView1.SelectedValue; string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; BindDetailsView(); }
接下来就是对数据的增删改操作:
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) { string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; NorthwindDb db = new NorthwindDb(strConn); var results = from emp in db.Employee where emp.EmployeeID == (int)DetailsView1.SelectedValue select emp; results.First().FirstName = ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text; results.First().LastName = ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).Text; db.SubmitChanges(); BindGridView(string.Empty); } protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) { string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; NorthwindDb db = new NorthwindDb(strConn); Employee emp = new Employee(); emp.FirstName = ((TextBox)DetailsView1.Rows[1].Cells[1].Controls[0]).Text; emp.LastName= ((TextBox)DetailsView1.Rows[2].Cells[1].Controls[0]).Text; db.Employee.InsertOnSubmit(emp); db.SubmitChanges(); BindGridView(string.Empty); } protected void DetailsView1_ItemDeleting(object sender, DetailsViewDeleteEventArgs e) { string strConn = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString; NorthwindDb db = new NorthwindDb(strConn); var results = db.Employee.Single(emp => emp.EmployeeID==(int)DetailsView1.SelectedValue); db.Employee.DeleteOnSubmit(results); db.SubmitChanges(); BindGridView(string.Empty); }
更新和添加的操作差不多,只是作了些小的改动。
ok,这就是在ASP.NET中利用LINQ对数据的操作。
详解在ASP.NET中用LINQ实现数据处理相关推荐
- Web.config详解+asp.net优化(1)
一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式) ...
- Web.config详解+asp.net优化
Web.config详解+asp.net优化(1) 一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的 ...
- shell脚本详解(十一)——awk文本和数据处理编程语言
shell脚本详解(十一)--awk文本和数据处理编程语言 一.awk命令 – 文本和数据进行处理的编程语言 1.工作原理 2.命令格式 3.awk常见的内建变量(可直接使用) 4.按行输出文本 5. ...
- 【转】ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证)...
[转]ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证) ASP.NET验证控件详解 现在ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服 ...
- ASP中利用OWC控件实现图表功能详解[zz]
ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...
- ASP.NET Core 中间件(Middleware)详解
ASP.NET Core 中间件(Middleware)详解 原文:ASP.NET Core 中间件(Middleware)详解 本文为官方文档译文,官方文档现已非机器翻译 https://docs. ...
- mysqlbinlog工具_mysqlbinlog命令详解 Part 1-实验环境准备
前面的一些章节我们对mysqldump常用命令进行了讲解 这个专题的内容为mysqlbinlog命令的详解 mysqlbinlog是mySQL中用来处理binlog的工具 1. MySQL二进制日志介 ...
- mysqlbinlog工具_mysqlbinlog命令详解 Part 5 通过位置和时间查看日志
实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 binlog模式采用row模式 前面的一些章节我们对mysqldump常用命令进行了讲解 这个专题的内容为mysqlbi ...
最新文章
- WebService的事务处理 (转)
- XJOI 3585 The rescue plan 营救计划 题解
- Linux下unlink函数的使用
- lua脚本简单编辑及常用指令
- list中抽出某一个字段的值_Java的stream代替List解决单线程等问题
- Java NIO零拷贝
- Shell 脚本实例
- 个人微信api接口调用-转账发红包
- 去哪儿网机票搜索系统的高并发架构设计
- java重载父类方法_子类重载父类方法
- 解决mac按键精灵鼠标位置不准(连点器)
- 微信小程序体验版打开调试模式才能正常调用接口问题
- ZT - 谷歌微软等三巨头掀电视革命:智能电视年底成真
- 标量、矩阵对向量求导
- 彩色图像色彩空间原理(理论篇—6)
- 使用经典的基本播放命令和 MML 创建 MIDI 文件
- QT 5.12 安装MinGW 7.3.0 32bit
- 大咖云集,从1到N,第十二届中国IDC产业年度大典集锦
- 快速学习-RocketMQ-“Request-Reply”特性
- 现阶段主流技术栈开发框架