1

我正在开发一个 ADO.NET 数据提供程序和一个关联的 DDEX 提供程序。我无法说服 Visual Studio TableAdapter 配置向导生成 SQL 语句以在插入和更新后刷新数据表。它生成插入和删除语句,但不会生成选择语句来进行刷新。

可以通过将表从服务器资源管理器(在 Visual Studio 中)拖放到数据集(例如,DataSet1.xsd)上来访问所提及的功能。它创建一个 TableAdapter 对象并配置 SELECT、UPDATE、DELETE 和 INSERT 语句。如果右键单击 TableAdapter 对象,上下文菜单有一个“配置”选项,用于启动“TableAdapter 配置向导”。该向导的第一个对话框有一个高级选项按钮,它指向一个标题为“刷新数据表”的选项。当与 SQL Server 表一起使用时,该选项会导致将“select field1, field2, ...”形式的语句添加到 TableAdapter 的 InsertCommand 和 UpdateCommand 命令的末尾。

您是否知道为了使 Visual Studio 将这些刷新语句添加到更新/插入命令中,可能需要从 DDEX 提供程序(或者可能是 ADO.NET 数据提供程序)公开什么类型的属性或接口?

Advanced SQL Generation Options Dialog Box的 MSDN 文档有一条说明,“刷新数据表仅在支持 SQL 语句批处理的数据库上受支持。” 这似乎暗示 .NET 数据提供者可能需要公开一些表明支持这种行为的属性。但我找不到它。有任何想法吗?

4

1 回答 1

0

TableAdapter 中的刷新功能意味着 tableadapter 操作的关联数据表在操作完成后会有更新的数据。

如果调用 tableadapter 的 insert 方法并为插入操作传递数据行或数据表,则 tableadapter 将刷新数据表/数据行以反映插入操作后数据库中的最新值。如果数据库中的表已为要插入的给定行的插入命令生成唯一 ID 或自动编号,则原始数据行的 p.key 列将反映数据库中自动生成的 id 值。如果您已在向导配置中将刷新选项设置为 true,则此刷新将由 tableadapter 负责。

现在这个“刷新”表适配器将在单个批次中执行 2 个查询,首先是插入,然后是带有 scope_identity 的选择。

编辑

如果在 TableAdapter 上关闭 Refresh,我的默认 Insert 命令将触发这个 SQL

INSERT INTO Table (coloumns) VALUES (values);

但是,如果在 TableAdapter 上打开 Refresh,我的默认 Insert 命令将触发这些 SQL 语句批处理。作为参数传递给 Insert() 的数据行也将在成功执行后更新。

INSERT INTO Table (coloumns) VALUES (values);

SELECT coloumns FROM Table WHERE (PKeyID = SCOPE_IDENTITY())
于 2010-04-30T14:28:36.150 回答