ASP.NET 2.0 数据操作:理解Computed Columns

0 下载量 175 浏览量 更新于2024-08-29 收藏 541KB PDF 举报
"在ASP.NET 2.0中处理Computed Columns列" 在ASP.NET 2.0中,数据库操作是常见的任务,特别是在与Microsoft SQL Server交互时。Computed Columns是SQL Server提供的一种特性,允许我们创建一个列,其值不是直接输入而是通过一个计算表达式得出,这个表达式可以依赖于表中的其他列。例如,在ServiceLog表中,可能有ServicePerformed、EmployeeID、Rate和Duration等列。通常,我们可以在应用程序层面计算每次服务的费用(Rate乘以Duration),但也可以选择在数据库级别通过添加一个名为AmountDue的Computed Column来存储这个信息。 创建Computed Column的好处在于,当Rate或Duration列的值发生变化时,AmountDue列会自动更新,无需手动维护。Computed Columns的值由数据库管理系统在查询时动态计算,因此它们是只读的,不能在INSERT或UPDATE语句中直接指定其值。然而,使用TableAdapter(在.NET Framework中用于填充DataSet的组件)并配合ad-hoc SQL语句时,可能会遇到问题。如果在TableAdapter的主查询中包含了Computed Column,那么自动生成的INSERT和UPDATE语句也会尝试更新这些列,这是不正确的。 解决这个问题的方法是手动修改TableAdapter的INSERT和UPDATE查询,以及对应的InsertCommand和UpdateCommand属性,以确保不包含Computed Column的引用。另外,如果使用存储过程,可以避免这种情况,因为存储过程的定义不会随TableAdapter向导的执行而改变。 本文将演示如何在Northwind数据库的Suppliers表中添加一个Computed Column,并展示如何配置TableAdapter以正确处理这个新列。这个过程将包括创建计算表达式、更新数据库结构、修改TableAdapter的SQL语句和确保在插入或更新数据时不会错误地操作Computed Column。通过这样的实践,开发者可以更好地理解和掌握在ASP.NET 2.0环境中利用Computed Columns提升数据库管理效率和数据一致性。