You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a very simple example to demonstrate this issue.
I have a Table Valued Function:
CREATE FUNCTION [dbo].[TestTVF]
(
@param1 varchar(max)
)
RETURNS TABLE
AS
RETURN
(
SELECT 1 as Id, 'Test' as [Name]
)
And I have the DbFunction
[DbFunction("DB", "TestTVF")]
public IQueryable<TestTvfResult> TestTVF([ParameterType(StoreType = "varchar(max)")] string param1)
{
var p1 = param1 != null ?
new ObjectParameter("param1", param1) :
new ObjectParameter("param1", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.
CreateQuery<TestTvfResult>("[DB].[TestTVF](@param1)", p1);
}
But when I use the function the sql generate is this:
exec sp_executesql N'SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name]
FROM [dbo].[TestTVF](@param1) AS [Extent1]',N'@param1 nvarchar(4000)',@param1=N'test'
Expected: use varchar(max) and not nvarchar(4000)
The text was updated successfully, but these errors were encountered:
FYI, I looked at this some time ago and it seems that the parameter type is passed to EF as specified in the attribute. The value is being lost somewhere in EF but I have not found yet where.
I have a very simple example to demonstrate this issue.
I have a Table Valued Function:
And I have the DbFunction
But when I use the function the sql generate is this:
Expected: use varchar(max) and not nvarchar(4000)
The text was updated successfully, but these errors were encountered: