ASP.NET - LinqDataSource Web 服务器控件概述

LinqDataSource 是 ASP.NET 中一个用于利用 LINQ(语言集成查询)的服务器控件,它简化了与各种数据源(如数据库、内存集合)的交互。通过声明性标记,你可以设置查询、过滤、排序和分组,无需手动编写 SQL 命令。控件还支持自动处理数据的更新、插入和删除。LinqDataSource 不仅可用于数据库,还能与内存中的数据集合交互,提供统一的编程模型,减少了与关系数据的复杂交互。
摘要由CSDN通过智能技术生成

 

      LinqDataSource 控件通过 ASP.NET 数据源控件结构向 Web 开发人员公开语言集成查询 (LINQ)LINQ 提供一种用于在不同类型的数据源中查询和更新数据的统一编程模型,并将数据功能直接扩展到 C# Visual Basic 语言中。LINQ 通过将面向对象编程的准则应用于关系数据,简化了面向对象编程与关系数据之间的交互。

通过使用声明性标记,可以创建一个 LinqDataSource 控件,连接到数据库或内存中数据集合(如数组)中的数据。在声明文本中,可以编写对数据进行检索、筛选、排序和分组操作所需的所有条件。当从 SQL 数据库表检索数据时,也可以配置 LinqDataSource 控件以处理数据的更新、插入和删除。该控件可做到这一点,而无需您编写 SQL 命令来执行这些任务。LinqDataSource 类还提供一个事件模型,使您能够处理自定义方案。

 

一、方案

当您创建网页以检索或修改数据,并希望利用 LINQ 提供的统一编程模型时,可使用 LinqDataSource 控件。通过使 LinqDataSource 控件能够自动创建与数据进行交互的命令,可以简化网页中的代码。

 

二、背景

LinqDataSource 控件为您提供了一种将数据控件连接到多种数据源的方法,其中包括数据库数据、数据源类和内存中集合。通过使用 LinqDataSource 控件,您可以针对所有这些类型的数据源指定类似于数据库检索的任务(选择、筛选、分组和排序)。可以指定针对数据库表的修改任务(更新、删除和插入)。

可以将 LinqDataSource 控件连接到存储在公共字段或属性中的任何类型的数据集合。对于所有数据源来说,用于执行数据操作的声明性标记和代码都是相同的。当您与数据库表中的数据或数据集合(与数组类似)中的数据进行交互时,不必使用不同的语法。

 

2.1、连接到数据库中的数据

当您与数据库中的数据进行交互时,不会将 LinqDataSource 控件直接连接到数据库,而是与表示数据库和表的实体类进行交互。通过对象关系设计器或运行 SqlMetal.exe 实用工具可生成实体类。创建的实体类通常位于 Web 应用程序的 App_Code 文件夹中。O/R 设计器或 SqlMetal.exe 实用工具将生成一个表示数据库的类,并为该数据库中的每个表生成一个类。

表示数据库的类将负责检索和设置数据源中的值。LinqDataSource 控件读取和设置表示数据表的类中的属性。若要支持更新、插入和删除操作,数据库类必须从 DataContext 类派生,且表类必须引用 Table<(Of <(TEntity>)>) 类。

通过将 ContextTypeName 属性设置为表示数据库的类的名称,将 LinqDataSource 控件连接到数据库类。通过将 TableName 属性设置为代表数据表的类的名称,将 LinqDataSource 控件连接到特定表。例如,若要连接到 AdventureWorks 数据库中的 Contacts 表,可将 ContextTypeName 属性设置为 AdventureWorksDataContext(或您为数据库对象指定的任何名称)。将 TableName 属性设置为 Contacts。下面的示例显示连接到 AdventureWorks 数据库的 LinqDataSource 控件的标记。

<asp:LinqDataSource

    ContextTypeName="AdventureWorksDataContext"

    TableName="Contacts"

    ID="LinqDataSource1"

    runat="server">

</asp:LinqDataSource>

      此示例不显示由 O/R 设计器生成的类,因为生成的代码对于本主题来说太长。不过,若要此示例正常运行,生成的代码必须存在。

 

2.2、连接到内存中的集合中的数据

当连接到内存中的数据集合(与数组类似)时,将 ContextTypeName 属性设置为包含该集合的类的名称。将 TableName 属性设置为集合本身的名称。

下面的示例显示一个类,其中包含一个字符串值数组。

public class MovieLibrary

{

    string[] _availableGenres = { "Comedy", "Drama", "Romance" };

 

    public MovieLibrary()

    {

    }

 

    public string[] AvailableGenres

    {

        get

        {

            return _availableGenres;

        }

    }

}

      下面的代码显示一个 LinqDataSource 控件,该控件从上一示例中的类读取影片流派列表。若要检索流派数组,请将 ContextTypeName 属性设置为 MovieLibrary,并将 TableName 属性设置为 AvailableGenres

<asp:LinqDataSource

    ContextTypeName="MovieLibrary"

    TableName="AvailableGenres"

    ID="LinqDataSource1"

    runat="server">

</asp:LinqDataSource>

 

2.3、将 LinqDataSource 控件与数据绑定控件一起使用

若要显示 LinqDataSource 控件中的数据,可将数据绑定控件绑定到 LinqDataSource 控件。例如,将 DetailsView 控件、GridView 控件或 ListView 控件绑定到 LinqDataSource 控件。为此,将数据绑定控件的 DataSourceID 属性设置为 LinqDataSource 控件的 ID。下面的示例说明一个 GridView 控件,该控件显示 LinqDataSource 控件中的所有数据。

<asp:LinqDataSource

    runat="server"

    ContextTypeName="AdventureWorksDataContext"

    TableName="Contacts"

    ID="LinqDataSource1">

</asp:LinqDataSource>

<asp:GridView

    ID="GridView1"

    runat="server"

    DataSourceID="LinqDataSource1" >

</asp:GridView>

      数据绑定控件将自动创建用户界面以显示 LinqDataSource 控件中的数据。它还提供用于对数据进行排序和分页的界面。在启用数据修改后,数据绑定控件会提供用于更新、插入和删除记录的界面。

通过将数据绑定控件配置为不自动生成数据控件字段,可以限制显示的数据(属性)。然后可以在数据绑定控件中显式定义这些字段。虽然 LinqDataSource 控件会检索所有属性,但数据绑定控件仅显示指定的属性。下面的示例演示一个 GridView 控件,该控件仅显示 AdventureWorks 数据库的 Products 表中的 Name Standard

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值