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

使用 SqlNetFramework 和 CodeSmith 创建 CRUD 操作

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.60/5 (2投票s)

2007 年 4 月 20 日

4分钟阅读

viewsIcon

32250

本文将介绍如何使用 SqlNetFramework 和 CodeSmith 生成用于 CRUD 操作的 SQL 代码。

引言

SqlNetFramework 有助于减少连接和执行关系数据库操作所需的代码量。在接下来的文章中,我们将展示如何减少 SQL 语句的开发时间。为了自动化 SQL 代码的创建,我们将使用 CodeSmith 工具。我们将重点关注自动化用于维护数据库表的创建、读取、更新和删除操作。

安装软件

在使用新工具创建 CRUD 操作之前,需要安装所需的软件。

  • 安装 SqlNetFramework。请从 www.sqlnetframework.com 下载。
  • 安装 CodeSmith 代码生成工具。请从 www.codesmithtools.com 下载。
  • 为 CodeSmith 注册 SqlNetFramework 插件。将 [SqlNetFrameworkInstallDir]\SqlNetFramework 1.0\CodeSmith\AddIn\SqlNetFrameworkCSAddIn.dll 和 SqlNetFrameworkCodeHelper.dll 文件复制到 [CodeSmithInstallDir]\currentVersion\AddIns 目录。对位于 [SqlNetFrameworkInstallDir]\SqlNetFramework 1.0\bin\SqlNetFramework.Core.dll 和 SqlNetFramework.Shared.dll 的文件重复相同的操作。

    检查 CRUD 模板

    现在您可以检查 CRUD 模板了。假设您已经对 CodeSmith 的工作方式有了基本的了解。CodeSmith 提供了非常易于使用的初学者教程,这些教程包含在 CodeSmith 安装中。

    1. 打开 CodeSmith Studio。
    2. 打开 CRUD 模板。它位于 [SqlNetFrameworkInstallDir]\SqlNetFramework 1.0\CodeSmith\Templates\CRUD.cst。
    3. CRUD 模板的属性显示在属性窗口中。其中三个属性是必需的,其余属性是可选的。
    4. Table 属性。您需要指定将为其创建 CRUD 操作的数据库表。使用 CodeSmith 附带的“Table Picker”编辑器选择数据库表。
    5. DbFactoryType 属性。您需要指定将用于创建 SQL 语句的数据库工厂。
    6. SqlDataStore 属性。您需要指定将存储 SQL 代码的 SQL 存储库。
    7. CreateDelete、CreateInsert、CreateSelect 和 CreateUpdate 属性用于指定将创建哪些 SQL 语句。默认情况下,所有 SQL 语句都会被创建。
    8. InsertFields、SelectFields 和 UpdateFields 分别用于指定将在 Insert、Select 和 Update SQL 语句中使用的字段。
    9. DeleteStatementId、InsertStatementId、SelectStatementId 和 UpdateStatementId 属性用于在 SQL 数据存储中分配标识符。它们的第一个值在模板执行时自动分配。

    生成 SQL 代码

    现在您将使用 CRUD 模板自动生成 SQL 代码。您将使用 SqlNetFramework C# 演示中附带的 DemoDb.mdb Access 数据库。

    1. 打开 CodeSmith Studio。
    2. 打开 CRUD 模板。
    3. 选择 Table 属性,然后单击… 按钮。“Table Picker”编辑器将显示出来。
    4. 添加新的数据源。单击数据源下拉列表右侧的... 按钮。
    5. 将显示“Data Source Manager”对话框。单击 Add 按钮。
    6. 将显示“Data Source”对话框。按照下表中的说明分配值。
      名称 AccessDemoDb
      提供者类型 ADOXSchemaProvider
      连接字符串 PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE='[YourDirectory]\DemoDb.mdb'
    7. 单击 Test 进行连接测试,然后单击 OK。
    8. 选择 AccessDemoDb 数据源,然后单击 Close。
    9. DemoDb 数据库表应该会显示在“Table Picker”编辑器中。
    10. 选择 Customer 数据库表。单击 Select。
    11. 您将使用 OleDb 数据库工厂来创建 SQL 语句。将 OleDbFactory 分配给 DbFactoryType 属性。
    12. 您将使用 XML 存储库来存储 SQL 代码。选择 SqlDataStore 属性,然后单击… 按钮。“SqlDataSource Manager”编辑器将显示出来。
    13. 单击 Add… 按钮添加新的 SqlDataStore。“Add/Edit SqlDataStore”对话框将显示出来。按照下表中的说明分配值。
      名称 DemoDbXml
      Manager type XmlSqlDataStoreManager
      Connection settings [SqlNetFrameworkInstallDir]\SqlNetFramework 1.0\Demos\SqlNetFrameworkEvaluationCS\App_Data\DemoDb.xml
    14. 单击 Ok 关闭“Add/Edit SqlDataStore”对话框。
    15. 选择 DemoDbXml,然后单击“Select”按钮。
    16. 现在您可以运行 CRUD 模板了。按 F5 运行它。
    17. 您可以看到属性窗口已刷新。InsertFields、SelectFields 和 UpdateFields 属性包含新值。这些值是从数据库表架构推断出来的。
    18. DeleteStatementId、InsertStatementId、SelectStatementId 和 UpdateStatementId 属性包含 XML SqlDataStore 分配的标识符。

    现在您将使用 DetailsView 控件和 SqlStoreDataSource 控件来显示 Customer 数据库表中的数据并执行操作。我已经创建了位于 SqlNetFramework C# 演示中的 webform,该演示包含在 SqlNetFramework 安装中。

    <SqlNetFramework:SqlStoreDataSource ID="dsCustomers" SelectStatementID="12" InsertStatementID="13" 
    UpdateStatementID="14" DeleteStatementID="15" ConnectionID="DemoDb" runat="server" 
    DataSourceMode="DataSet"></SqlNetFramework:SqlStoreDataSource>
     
    <asp:DetailsView ID="dvCustomers" DataSourceID="dsCustomers" runat="server" AllowPaging="True" 
    AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="True" 
    AutoGenerateRows="False" DataKeyNames="CustomerId">
        <Fields>
            <asp:BoundField DataField="CustomerId" HeaderText="CustomerId" InsertVisible="False"
                ReadOnly="True" SortExpression="CustomerId" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
            <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
        </Fields>
    </asp:DetailsView>    
    

    结论

    如您所见,SqlNetFramework 减少了您需要编程的代码量。通过使用 SqlNetFramework 和 CodeSmith,您可以自动化 SQL 代码的创建。

  • © . All rights reserved.