我有一个非常简单的示例来演示此问题。
我有一个表值函数:
CREATE FUNCTION [dbo].[TestTVF]
(
@param1 varchar(max)
)
RETURNS TABLE
AS
RETURN
(
SELECT 1 as Id, 'Test' as [Name]
)
并且我将其导入了edmx文件:
但是当我使用该函数时,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)?
答案 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* ...'
问这个问题我很愚蠢。