实体框架未使用正确的参数类型

时间:2018-08-27 13:06:27

标签: entity-framework

我有一个非常简单的示例来演示此问题。

我有一个表值函数:

CREATE FUNCTION [dbo].[TestTVF]
(   
    @param1 varchar(max)
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT 1 as Id, 'Test' as [Name]
)

并且我将其导入了edmx文件:

enter image description here

但是当我使用该函数时,sql生成的是:

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'

这只是一个示例,但是在我的实际情况下,我需要传递一个可能多达300KB的大型xml文档。

如何让实体框架使用nvarchar(max)而不是nvarchar(4000)?

1 个答案:

答案 0 :(得分:0)

我猜如果字符串长度足够长,Entity Framework将自动切换参数类型。

示例:

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(max) ',@param1=N'*really long string* ...'

问这个问题我很愚蠢。