Problem jest następujący:
-
SQLCLR nie pozwala na dostęp do danych wewnątrz TestFillRow
-
Mimo że „wygląda” na to, że TestFillRow nie uzyskuje dostępu do danych, sposób, w jaki kompilator tłumaczy kod za pomocą instrukcji „yield”, polega na faktycznym odroczeniu jego wykonania do pierwszego wywołania .MoveNext() do iteratora. Dlatego następujące oświadczenie:
using (SqlConnection con = new SqlConnection("context connection=true"))
zostanie wykonany wewnątrz
TestFillRow
... co jest nielegalne.
Nie używaj zwrotu zysku; zamiast tego załaduj cały wynik do List<>
i zwróć listę na końcu funkcji UD.