0

我是 .net c# 业务的新手,上周我创建了一个表单应用程序来对 SSIS 配置的数据进行洗牌。MS 的天才们决定不对我正在使用的表应用一个键——并且生成两个候选字段的复合键将不起作用,因为它们的组合长度太长。我不想通过添加自动增量字段来弄乱 [ssis 配置] 表模式。

因此,我在从 DataGridView 控件获取更新以使用 TableAdapter 时遇到了很多麻烦。

我需要更新语句来更新表集 a = x 其中 b = y 和 c = z。

我可以设置 TableAdapter 的更新方法吗,如果可以,如何设置。如果没有,该怎么办?

我看到这个自动生成的代码:

this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
            this._adapter.InsertCommand.Connection = this.Connection;
            this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[SSIS Configurations Staging] ([ConfigurationFilter], [Configur" +
                "edValue], [PackagePath], [ConfiguredValueType]) VALUES (@ConfigurationFilter, @C" +
                "onfiguredValue, @PackagePath, @ConfiguredValueType)";

但在我的表单代码中,UpdateCommand 不可用。我假设这是因为上面的代码是一个类定义,在创建对象后我无法更改。我看到此代码建议不要更改,因为它是由 VS 自动生成的。

感谢您最出色的建议。

4

1 回答 1

2

从您的代码中,我假设您正在使用设计器的类型化数据集。

没有主键是设计人员不会生成插入、更新或删除命令的众多原因之一。这是 CommandBuilder 的限制。

您可以使用属性窗口向 Apadapter 添加更新命令,但我建议您不要这样做,如果您稍后再次配置主查询,它会很高兴地放弃您的所有工作。相同的论点反对修改任何 *.Designer.cs 文件中的代码。

相反,双击带有适配器名称的标题。设计者将创建(如有必要)随附的非设计者源文件并将部分类的外部放入其中。不幸的是,这就是设计器在 C# 中的代码生成有多远,你必须从那里开始。(旁白:VB 设计者知道更多技巧)。

编辑:

您必须提供自己的 Update(...) 方法并设置 UpdateCommand 等。

  var updateCommand = new SqlCommand();
  ...
于 2009-02-27T09:10:09.130 回答