【问题标题】:Entity Framework not using the right type for parameter实体框架没有使用正确的参数类型
【发布时间】:2019-02-02 00:54:37
【问题描述】:

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

我有一个表值函数:

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)?

【问题讨论】:

  • 是模型中的列 nvarchar(max) (例如它是否配置为 .IsMaxLength())?

标签: entity-framework


【解决方案1】:

我猜如果字符串足够长,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* ...'

我觉得问这个问题很愚蠢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多