0

我有一个数据集,并且在每个 dataTable 下的设计器中都有一个表适配器。所以我可以添加->查询到数据表并选择一个存储过程,然后在下面的表适配器部分中列出。我还可以选择表适配器并将其选择/插入/更新/删除命令设置为存储过程。

我的问题是有什么区别,更重要的是,您如何知道何时调用查询或命令?(我需要知道,因为我可以以不同的方式配置参数,而那些参数不能正常工作)

例如,我怎么知道这是使用哪一个?

    private void saveToolStripButton_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.permitInfoLinksBindingSource.EndEdit();
        this.linksTableAdapter.Update(this.dataSet1);
    }

似乎以下内容正确地使用环境变量调用存储过程......但如果我尝试将Environment.UserName.ToUpper()“参数集合编辑器”放入 SourceColumn 下,它会发送 null 。

this.linksTableAdapter.spInsertLink(Environment.UserName.ToUpper(), fkPermitInfoID, 
fPath, ref ident);
4

1 回答 1

1

这段摘自MSDN有帮助吗?

TableAdapter 使用数据命令来读取和写入数据库。TableAdapter 的初始填充(主)查询用作创建关联数据表架构的基础,以及与 TableAdapter.Update 方法关联的 InsertCommand、UpdateCommand 和 DeleteCommand 命令。这意味着调用 TableAdapter 的 Update 方法会执行最初配置 TableAdapter 时创建的语句,而不是使用 TableAdapter 查询配置向导添加的其他查询之一。当您使用 TableAdapter 时,它可以使用您通常执行的命令有效地执行相同的操作。例如,当您调用适配器的 Fill 方法时,适配器会执行其 SelectCommand 属性中的数据命令并使用数据读取器(例如,SqlDataReader) 将结果集加载到数据表中。同样,当您调用适配器的 Update 方法时,它会为数据表中的每条更改记录执行适当的命令(在 UpdateCommand、InsertCommand 和 DeleteCommand 属性中)。

据我了解,这些*Command是样板查询,而表下方的查询是您自己创建的更具体的自定义内容,以满足您更复杂的需求,因此如果您使用命令,则无法将更复杂的参数传递到查询中。

我也由此推测,当您调用更新等基本操作时,会执行默认命令,而不是之后定义的查询。

我只是简单地使用了tableadapter,而且我对它们的了解很浅(我一发现就转移到实体框架),所以这个回答之夜并不值得......

于 2012-11-13T00:41:38.857 回答