Комментарии 9
Долгое время хотел разобраться, но было не до этого, спасибо.
Есть одно место где приходится использовать yield return - это Structured SqlParameter (мне не понятно, зачем сделано именно так, видно как-то связано с переиспользованием SqlDataRecord), будет ли хоть какой-то толк если явно переписать этот yield return на свой класс?
Что вы понимаете под "приходится использовать yield return"? Согласно документации, Structured SqlParameter принимает либо DataTable, либо DbDataReader (произвольный).
Где тут в принципе можно использовать yield return?
Вполне себе он принимает IEnumerable<SqlDataRecord> и если вы откроете официальный пример, то там будет yield return. И какие преимущества в использовании DataTable или DbDataReader?
Хм, не вижу на вот этой странице — https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/sql/table-valued-parameters — никакого упоминания ни IEnumerable<SqlDataRecord>
, ни yield return.
Но если так можно и вы проверяли — почему бы и нет? Это точно удобнее чем собирать свой DbDataReader.
А вот если стриминг данных в запрос без промежуточного буфера вам не важен, то DataTable удобнее.
По этой ссылке буквально написано:
System.Data.SqlClient supports populating table-valued parameters from DataTable, DbDataReader or IEnumerable<T> \ SqlDataRecord objects.
Yield return оказался очень удобен для получения сообщений о ходе выполнения задачи в сервисе через открытое gRPC соединение.
yield return