发布网友 发布时间:2022-04-27 10:13
共1个回答
热心网友 时间:2022-04-14 22:32
实际上,这是确保以后的生产解决方案中的 ASP.NET 页和组件能够按照预期方式工作的唯一办法。这对于从解决方案中的某个层调用其他层时的验证信任边界和安全性问题尤其正确。 另外,在进行测试时,请勿拘泥于创建生产类接口。您只需测试目标方法。实际上,故意创建一些您不愿以之为最终生产解决方案的“丑陋”测试页是一个好的策略!本文中,我创建了一些非常简单的 ASP.NET 页,其中包含一个测试记录列表和一个用于添加、编辑和删除测试记录的输入表单。 例如,以下是用于测试主题记录的 WebForm 布局。您会发现,它包含错误消息或其他消息的状态标签、记录计数标签、显示记录列表的数据网格、用于输入检索时使用的记录 ID 的输入框以及支持添加、编辑和删除记录的小表格(参见图 1)。 图1:用于测试主题记录的 WebForm 布局在创建测试页时,最好使代码简洁明了。我通常会为每个按钮添加一小段代码,以调用本地方法来处理数据库操作。以下是 TopicTest.aspx 页上 Get Record(获取记录)按钮的代码。 Private Sub btnGetTopic_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetTopic.Click Try Dim ID As Integer = Int32.Parse(txQueryID.Text) GetItem(ID) ' 进行数据库调用 txID.Text = txQueryID.Text txTitle.Text = mTitle txDescription.Text = mDescription lbStatus.Text = "success!" Catch ex As Exception lbStatus.Text = ex.Message End Try End Sub请注意,本方法中实际执行的唯一操作是由 GetItem(ID) 方法调用处理的。它执行数据库调用并使用返回的值设置本地变量。以下是 GetItem 方法的代码。请注意,它使用了大量的 SqlParameter 对象来处理输入和输出值。 Private Sub GetItem(ByVal ID As Integer) Try pr = New SqlParameter("RETURN_VALUE", SqlDbType.Int) pr.Direction = ParameterDirection.ReturnValue Dim pTitle As SqlParameter = New SqlParameter With pTitle .Direction = ParameterDirection.Output .DbType = DbType.String .ParameterName = "@Title" .Size = 30 End With Dim pDescription As SqlParameter = New SqlParameter With pDescription .Direction = ParameterDirection.Output .DbType = DbType.String .ParameterName = "@Description" .Size = 500 End With cd = New SqlCommand With cd .CommandText = "TopicsGetItem" .CommandType = CommandType.StoredProcere .Parameters.Add(New SqlParameter("@AdminCode", "adm")) .Parameters.Add(New SqlParameter("@ID", ID)) .Parameters.Add(pTitle) .Parameters.Add(pDescription) .Parameters.Add(pr) .Connection = cn .Connection.Open() .ExecuteNonQuery() .Connection.Close() End With ' 检查返回代码 If Not pr.Value Is Nothing Then Select Case Int32.Parse(pr.Value) Case 100 : Throw New ApplicationException("Access violation") Case 101 : Throw New ApplicationException("Invalid ID") End Select End If ' 设置返回值 mTitle = pTitle.Value.ToString() mDescription = pDescription.Value.ToString() Catch ex As Exception Throw New Exception(ex.Message, ex) End Try End SubGetItem 方法的另一个重要方面是使用了返回值参数。它在前几行代码中进行声明,并在执行存储过程后进行检查。请注意,我检查了已知错误代码 100 和 101。有关其他错误的处理方法,我们将在以后介绍如何创建成熟的中间层时进行介绍。问题在于,我要利用返回值并在需要时抛出一个自定义异常。 对于本解决方案示例,我最终生成了六个 Web 表单,并用它们测试了将近 30 个存储过程和自定义函数。您可在本文开始部分列出的下载软件包中找到所有这些完成的表单。 现在我们已经定义了表、创建了存储过程和函数并生成了 ASP.NET Web 表单,因此可以使用 Visual Studio .NET 2003 生成数据库层的安装脚本了。数据库管理员(有时是您自己)可以将此脚本应用到生产服务器上。 生成源代码和安装脚本Visual Studio .NET 的另一个重要功能是它能够为现有数据库生成一个完整的生成脚本。实际上,您可以使用 Visual Studio .NET 为整个数据库层生成源代码(包括生成表和索引、授权、存储过程等),还可以生成一个可用于在现有 SQL Server 上安装这些数据库对象的命令行脚本。 生成安装脚本非常容易,它包括两个步骤:首先,需要生成 T-SQL 脚本来创建数据库对象(表、索引、过程等)。然后,生成一个针对目标 SQL Server 执行 T-SQL 脚本的命令行脚本。 生成T-SQL 脚本 生成安装脚本之前,需要生成一个脚本集合,包括创建数据库中的所有对象(表、索引、约束条件、用户等)。 图2:生成脚本集合以下是生成 T-SQL 脚本的步骤:·在 Server Explorer(服务器资源管理器)中,在选定的数据库节点 (DotNetKB) 上单击鼠标右键,然后从上下文相关菜单中选择 Generate Create Script...(生成创建脚本...),打开 Generate Create Scripts(生成创建脚本)对话框。·在 General(常规)选项卡上,选中 Script all objects(编写全部对象脚本)复选框。·在 Formatting(格式化)选项卡上,选中除最后一个复选框以外的所有复选框(仅与 7.0 版脚本兼容的功能)。仅在您的目标服务器是 SQL Server 7.0 而不是 SQL Server 2000 时,才需要最后一项。·在 Options(选项)选项卡上,在 Security Scripting Options(安全性脚本选项)部分,选中除 Script SQL Server logins(撰写 SQL Server 登录脚本)之外的所有选项。确保选中 Table Scripting Options(表脚本选项)部分中的所有复选框。同时保留 File Format(文件格式)和 Files to Generate(生成的文件)的默认单选按钮。最后,当所有设置均已设置正确时,单击 OK(确定)按钮开始脚本生成过程。·系统将提示您指定文件位置。默认情况下,Visual Studio .NET 将指向现有数据库项目中的 Create Scripts(创建脚本)文件夹。单击 OK(确定)按钮接受此默认位置。 该过程完成后,您将获得保存数据库中各对象的文件列表。此脚本集合还包含了用于创建相应的用户并为其授予正确权限的脚本。您甚至可以将这些信息保存到 Visual SourceSafe 中,用于处理以后的版本问题。最后,您可以根据需要将这些文件传送给其他人,使他们可以直接更新或更改这些文件。至此,已经完成了数据库层的完整源代码。 生成安装脚本 最后一个步骤是让 Visual Studio .NET 2003 生成一个命令行脚本,用于读取所有 T-SQL 脚本并根据目标 SQL Server 运行这些脚本。为此,需要完成以下步骤。 ·在 Solution Explorer(解决方案资源管理器)中,在项目名称 (DotNetKB) 上单击鼠标右键,然后从上下文相关菜单中选择 Create Command File...(创建命令文件...),打开 Create Command File(创建命令文件)对话框。·如果需要,可以更新 Name of Command File(命令文件名称)输入框,然后选择合适的验证方案(除非您需要远程连接服务器,否则请使用 Microsoft Windows�0�3 NT�0�3)。最后,单击 Add All(全部添加)按钮,以便将所有 T-SQL 脚本都包含在安装操作中。·然后,单击 OK(确定)按钮生成脚本。这样即可将完整的脚本加载到编辑器窗口(参见图 3)中,您可以在该窗口中检查脚本,所做的更改将在您关闭窗口时得到保存。