I've got a SqlServer project with a very simple test for a Table-Valued-Function:-
[SqlFunction(TableDefinition = "forename nvarchar(50)", FillRowMethodName = "TestFillRow", DataAccess = DataAccessKind.Read)]
public static IEnumerable TestConn(int ID)
{
using (SqlConnection con = new SqlConnection("context connection=true"))
{
//con.Open();
yield return "Anthony";
}
}
public static void TestFillRow(object obj, out string forename)
{
forename = (string)obj;
}
Note the Open on the connection is currently commented out. Once deployed I can execute like this in SQL:-
SELECT * FROM [dbo].[TestConn](1)
All works fine.
Now I uncomment the con.open()
and it fails with:-
Data access is not allowed in this
context. Either the context is a
function or method not marked with
DataAccessKind.Read or
SystemDataAccessKind.Read, is a
callback to obtain data from FillRow
method of a Table Valued Function, or
is a UDT validation method.
I don't see what the problem is, the TestConn function has got DataAccessKind.Read
.
Anyone know of any other reasons for getting this error?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…