Entity Framework не использует правильный тип для параметра - PullRequest
0 голосов
/ 27 августа 2018

У меня есть очень простой пример, чтобы продемонстрировать эту проблему.

У меня есть табличная функция:

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'

Это всего лишь пример, но в моем сценарии реального мира мне нужно передать большой XML-документ размером до 300 КБ.

Как заставить Entity Framework использовать nvarchar (max), а не nvarchar (4000)?

1 Ответ

0 голосов
/ 27 августа 2018

Я думаю, 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* ...'

Мне глупо задавать этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...