c# - 从 SqlDataReader 异步读取每个字段有什么好处吗?

标签 c# asynchronous ado.net

异步读取字段有什么好处吗?

假设我有以下内容:

SqlDataReader reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
    try
    {
        if (reader.IsDBNull(COL_NAME))
        {
            continue;
        }

        user = new User();
        user.Id = reader.GetInt32(COL_ID);

使用 IsDBNullAsyncGetInt32Async 等是否会给现实世界带来任何好处?

最佳答案

在浏览了一些反射器之后,这里有趣的方法(GetFieldValueAsync<T>IsDBNullAsyncinternal 方法GetBytesAsync)只为CommandBehavior.SequentialAccess 做“有趣”的代码。设想。所以:如果你不使用它:不要打扰 - 行数据已经缓冲在内存中,并且 Task<T>是纯粹的开销(尽管它至少是一个已经完成的任务结果,即 Task.FromResult<T> - 由 await 有效处理,无需上下文切换)。

关于c# - 从 SqlDataReader 异步读取每个字段有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19894975/

相关文章:

ado.net - 如何调试本地存储的问题? HandleBatchResponse 中的 "An error occurred while processing this request"出现问题

c# - 指定泛型类,其中 T 应该是其他类型的子类

c# - 以编程方式在 asp.net 应用程序的 microsoft.identityModel 中配置联合身份验证元素

c# - 使用两个条件拆分字符串

c# - 交易范围的细微差别

c# - 将 Error_Number() 从存储过程获取到调用 .NET 应用程序

c# - 没有 ID 和名称的 GetElementById 如何?

python - 最后阻止 Tornado 生成引擎不起作用

javascript - 使用服务器方法更新 react 变量

带有自定义 header 的 Python grequests