【问题标题】:Where should I declare a general GetDataRow method in a typed DataSet?我应该在类型化 DataSet 中的何处声明通用 GetDataRow 方法?
【发布时间】:2011-08-23 17:44:39
【问题描述】:
我正在将使用大量手动动态 SQL 的报表代码转换为使用动态数据集,但仍有很多情况用于临时查询和插入。当前代码使用例如clsFunctions 中的 GetDataRow 静态方法(是的,我知道,太可怕了!),但我想将此函数重新定位到我正在建立的数据层。在我的类型化表适配器上使它成为扩展方法让我想到了,因为它们具有定义的连接属性,所以我知道我总是使用与其他数据访问代码相同的连接,但是类型化表适配器没有真正的基类将方法添加到,因为它们都只从 Component 派生,并生成它们的“共享”函数。
我应该将我的 GetDataRow 方法放在基于类型数据集的数据层中的什么位置?
【问题讨论】:
标签:
.net
.net-4.0
dataset
strongly-typed-dataset
【解决方案1】:
由于动态表适配器是部分类,只需创建另一个部分类即可将您的特殊功能添加到表适配器。
在此示例中,我有一个名为“dsMain”的数据集和一个用于“文档”表的 tableadapter。
namespace dsMainTableAdapters
{
public partial class DocumentTableAdapter
{
public dsMain.DocumentRow GetDataRow()
{
System.Data.SqlClient.SqlConnection oconn = this.Connection;
//now Run your custom code on the connection
}
}
}
现在您的表适配器中应该有一个名为“GetDataRow”的新方法。
只要您使用数据集 tableadapter 的 EXACT 命名空间和 tableadapter 的 EXACT 类名,您就应该能够访问任何您想要的连接对象。