Le problème est le suivant :
-
SQLCLR n'autorise aucun accès aux données dans TestFillRow
-
Même s'il "semble" que votre TestFillRow n'accède pas aux données, la façon dont le compilateur traduit le code avec des instructions "yield" consiste en fait à différer son exécution jusqu'au premier appel .MoveNext() à l'itérateur. D'où l'énoncé suivant :
using (SqlConnection con = new SqlConnection("context connection=true"))
est exécuté dans
TestFillRow
... ce qui est illégal.
N'utilisez pas le retour de rendement; à la place, chargez le résultat entier dans une List<>
et renvoie la liste à la fin de la fonction UD.