c# - GetSchema 方法可以异步工作吗?

标签 c# sql sql-server metadata getschema

SqlConnection 类的GetSchema 方法如何工作? 它运行查询吗?可以异步调用吗?

最佳答案

你能委托(delegate)调用“GetSchema”的方法吗?因为 SQL 是事务系统,我们在 c# 中使用的并行任务非常不同,甚至可能在 sql 中不存在。这篇文章中排名最高的答案很好地解释了这一点。

SQL Server (TSQL) - Is it possible to EXEC statements in parallel?

如果您不能异步运行 GetSchema 方法,因为该方法只返回一个数据表,您也可以对返回相同内容的数据库执行查询。

这篇文章显示 getSchema 返回一个数据表:http://msdn.microsoft.com/en-us/library/ms136365(v=vs.110).aspx

阅读这篇文章的评论:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.getschema(v=vs.110).aspx

如果您多次调用 getSchema,最后一次调用可能会覆盖第一个响应。

如果可以,您可以在 SQL 中创建一个服务队列来处理“异步执行”,但它非常复杂:http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

希望这对您有所帮助!

关于c# - GetSchema 方法可以异步工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705698/

相关文章:

c# - 相同的结构体有不同的HashCode

sql - 如何编写条件 "x = y",使其在 x 和 y 均为 NULL 时为真?

sql-server - 从 SQL Server 多表查询创建单个 XML

sql-server - TSQL-Merge 中条件匹配时更新和插入

c# - 为什么 EF 说我的模型已更改,而实际上它没有更改?

c# - 用 C# 动态读取 COBOL 重新定义

c# - 带有服务结构的 SOAP - Https 和 Http 绑定(bind)

sql - SQL 查询 : possibly using CASE WHEN 中的复杂排序

sql - MySQL 中特定表的 JOIN 中的 LIMIT 1?

sql-server - 如何从 Visual Basic.Net 调用表值函数以及如何存储结果