65.9K
CodeProject 正在变化。 阅读更多。
Home

LinqDataSource 结合 ASP.NET 数据控件 [第四部分]

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.17/5 (3投票s)

2008 年 6 月 24 日

CPOL

4分钟阅读

viewsIcon

36476

将 LinqDataSource 与 GridView 和 DropDownList 等 ASP.NET 数据控件结合使用

注意:请为本系列投票并提供您的反馈,以便将来能有所改进/符合您的期望。谢谢!

涵盖的主题
介绍、LINQ to SQL 类文件、LinqDataSource 和 .dbml 文件结构 DataContext 类、在 C# 3.0 中编写 LINQ 以及参数化 LINQ 查询 使用 LinqDataSource 动态更改底层 T-SQL 以及 CRUD 操作的一部分 [更新和删除] 使用 LinqDataSource.Insert() 进行插入以及通过 web.config 管理数据库连接
LinqDataSource 第一部分 LinqDataSource 第二部分 LinqDataSource 第三部分 LinqDataSource 第四部分

在本文中,我们将介绍插入操作以及 .dbml 对 web.config 的影响。坦白说,理解插入操作花了我一些时间;与 SqlDataSource 相比,它有点棘手。我希望这个解释会很有用。

在第三部分中,我们了解了如何使用 GridView 的 itemtemplate 来实现删除选项。在这里,我们将向按钮集合中再添加一个按钮 [如图 13 – 第三部分所示]。我们将把插入代码添加到 Insert 按钮的点击事件中,如图 1 所示。

图 1

image001.png



在 btnInsert 的点击事件中添加以下代码,如图 2 所示。

图 2

image002.png



如图 2 - 步骤 1 所示,这是 btnInsert 的点击事件。我们从 System.Collections.Specialized 命名空间定义了 lstNewCustomer ListDictionary。在图 2 - 步骤 2 中,我们有四个占位符映射到 customer 表的列名。[有关 customer 表的模式,请参阅图 1 – 第三部分]。在图 2 - 步骤 3 中,我们从 GridView 的页脚行获取这些列的值。步骤 3 将通过 GridView 的页脚行添加一条新记录。[这是一个关于“使用 GridView 插入新记录”的优秀解释]。尽管这篇帖子基于 SqlDataSource,但从概念上讲,使用 LinqDataSource 的过程是相同的。用图 2 中的代码替换这篇帖子中 Button1_Click 事件的代码。

您可以在此处找到有关如何使用 GridView 插入新记录的另一个优秀资源。

在图 2 - 步骤 4 中,我们将把输入值添加到 ListDictionary lstNewCustomer。请注意 ListDictionary 的键值集合,其中键是列名,值是要插入的列值。

lstNewCustomer ListDictionary 将用于通过 LinqDataSource 插入记录,例如 LinqDataSource1.Insert(lstNewCustomer),然后我们将重新绑定 GridView,例如 GridView1.DataBind()。记录插入并将 GridView 重新填充后,我们将清除输入文本框,如图 2 - 步骤 5 所示。图 3 将引导您完成插入记录的生命周期。

图 3

image003.png



如上所示,图 3.A 代表一个空的 GridView 页脚行。3. B 是准备插入值的行。点击 Insert 按钮插入此记录。这将触发如图 2 所示的 btnInsert 点击事件。作为此事件的结果,一条记录将被插入到 customer 表中。

3. C 是更新后的 GridView,记录已插入到底层表中。此外,根据图 2 – 步骤 5 中的代码,我们在成功插入记录后清空了页脚行。

至此,我们介绍了如何使用 GridView 和 LinqDataSource 编辑、更新、删除和插入记录。现在是时候关注 web.config 并弄清楚底层的数据库连接机制了。您是否考虑过 LINQ to SQL 是如何真正与 customer 表交互的?数据库连接字符串在哪里?如果想过,说明您方向正确。如果没想过,现在是时候了。

到目前为止,从第一部分到本文所解释的代码将在您的本地计算机/笔记本电脑或集成了安全性选项设置为 true 的任何机器上运行。更多详情请参阅图 4。

图 4

image004.png



此连接字符串是我们首次在第一部分中拖放的结果。[从服务器资源管理器将 customer 表拖放到 .dbml 页面]。如果您打开 .dbml 文件下的 [文件名].designer.cs 文件 – 您将找到如图 6 所示的代码。

图 5

image005.png



如图 5 所示,.dbml 文件名为 Customer.dbml。图 6 中的代码来自 Customer.designer.cs 文件。

图 6

image006.png



比较图 4 和图 6,并重点关注图 4 中的 connectionstring 属性与图 6.1 [带下划线代码] 中的属性。这就是 LinqDataSource 与底层数据库通信的方式。图 6.2 中的代码解释了 customer 表是如何映射到部分类 customer 的。

当集成安全性设置为 false 且需要用户名和密码连接数据库时,此代码将失败。这是一个陷阱,可以通过在连接字符串中添加用户名和密码而不是使用集成安全性来修复。

编译器免费生成了大量的 ORM 代码。如果您真的想探索 LinqDataSource 的强大功能,请开始深入研究这些自动生成的代码。您会发现许多秘密,任何书籍或文章都不会解释。我正在探索中,并将报告任何有趣的发现。

祝您编程愉快,富有成效!
© . All rights reserved.