我的项目中有一个类型化的数据集。我想用只有一行而不是所有行来填充数据表。所选行必须基于主键列。我知道我可以修改设计器代码以实现此功能,但是如果我更改设计器中的代码,我可能会在将来通过设计器更新我的数据时删除此代码。
所以我想改变SelectCommand
不是在设计器中而是在启动MyTypedTableAdapter.Fill
方法之前。奇怪的是,设计师没有创造一个SelectCommand
!它创建所有其他命令,但不是这个。如果它会创建SelectCommand
我可以这样改变它:
this.operatorzyTableAdapter.Adapter.SelectCommand.CommandText += " WHERE MyColumn = 1";
它远非完美,但至少我不必修改设计师的工作。不幸的是,正如我之前所说,SelectCommand
没有创建。相反,设计师创造了这样的东西:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
private void InitCommandCollection() {
this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
this._commandCollection[0].Connection = this.Connection;
this._commandCollection[0].CommandText = "SELECT Ope_OpeID, Ope_Kod, Ope_Haslo, Ope_Imie, Ope_Nazwisko FROM dbo.Operatorzy";
this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
}
在我看来这没有意义。为什么要创造,UpdateCommand
却不创造?我可以忍受,但它是私有的,所以我不能在类代码之外访问它。InsertCommand
DeleteCommand
SelectCommand
this._commandCollection
我不知道如何在不更改设计器代码的情况下进入这个集合。我的想法是通过部分类定义公开集合。但是我想介绍许多类型化的数据集,我真的不想为它们中的每一个创建部分类定义。
请注意,我使用的是 .NET 3.5。
我发现这篇关于访问私有属性的文章,但它涉及 .NET 4.0
谢谢你的时间。