• 个人认为学习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实现数据处理相关推荐

  1. Web.config详解+asp.net优化(1)

    一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式) ...

  2. Web.config详解+asp.net优化

    Web.config详解+asp.net优化(1) 一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的 ...

  3. shell脚本详解(十一)——awk文本和数据处理编程语言

    shell脚本详解(十一)--awk文本和数据处理编程语言 一.awk命令 – 文本和数据进行处理的编程语言 1.工作原理 2.命令格式 3.awk常见的内建变量(可直接使用) 4.按行输出文本 5. ...

  4. 【转】ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证)...

    [转]ASP.NET验证控件详解(非空验证,比较验证,范围验证,正则表达式,自定义验证) ASP.NET验证控件详解 现在ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服 ...

  5. ASP中利用OWC控件实现图表功能详解[zz]

    ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...

  6. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...

  7. ASP.NET Core 中间件(Middleware)详解

    ASP.NET Core 中间件(Middleware)详解 原文:ASP.NET Core 中间件(Middleware)详解 本文为官方文档译文,官方文档现已非机器翻译 https://docs. ...

  8. mysqlbinlog工具_mysqlbinlog命令详解 Part 1-实验环境准备

    前面的一些章节我们对mysqldump常用命令进行了讲解 这个专题的内容为mysqlbinlog命令的详解 mysqlbinlog是mySQL中用来处理binlog的工具 1. MySQL二进制日志介 ...

  9. mysqlbinlog工具_mysqlbinlog命令详解 Part 5 通过位置和时间查看日志

    实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 binlog模式采用row模式 前面的一些章节我们对mysqldump常用命令进行了讲解 这个专题的内容为mysqlbi ...

最新文章

  1. WebService的事务处理 (转)
  2. XJOI 3585 The rescue plan 营救计划 题解
  3. Linux下unlink函数的使用
  4. lua脚本简单编辑及常用指令
  5. list中抽出某一个字段的值_Java的stream代替List解决单线程等问题
  6. Java NIO零拷贝
  7. Shell 脚本实例
  8. 个人微信api接口调用-转账发红包
  9. 去哪儿网机票搜索系统的高并发架构设计
  10. java重载父类方法_子类重载父类方法
  11. 解决mac按键精灵鼠标位置不准(连点器)
  12. 微信小程序体验版打开调试模式才能正常调用接口问题
  13. ZT - 谷歌微软等三巨头掀电视革命:智能电视年底成真
  14. 标量、矩阵对向量求导
  15. 彩色图像色彩空间原理(理论篇—6)
  16. 使用经典的基本播放命令和 MML 创建 MIDI 文件
  17. QT 5.12 安装MinGW 7.3.0 32bit
  18. 大咖云集,从1到N,第十二届中国IDC产业年度大典集锦
  19. 快速学习-RocketMQ-“Request-Reply”特性
  20. 现阶段主流技术栈开发框架

热门文章

  1. 异步编程系列第05章 Await究竟做了什么?
  2. Lync开发实例3—自定义客户端
  3. 双向链表(不带头结点)
  4. 半夜闲的真是蛋疼。。。决定写个小博文
  5. 探索Office 2010新特性
  6. 面试官系统精讲Java源码及大厂真题 - 35 经验总结:各种锁在工作中使用场景和细节
  7. JavaScript导出图片和数据到Excel
  8. 图片服务 - thumbor成像
  9. Oracle 优化和性能调整
  10. C语言,向函数传递一维数组,调用函数并计算平均成绩