gpt4 book ai didi

sql - 如何强制 Entity Framework 4.0 生成与其对应的数据库列大小相等的参数

转载 作者:行者123 更新时间:2023-12-04 20:30:12 25 4
gpt4 key购买 nike

我有一个非常简单的表,名为 Member , 由以下内容组成:

CREATE TABLE [dbo].[Member](
[Member_MemberId] [int] IDENTITY(1000,1) NOT NULL,
[Member_ExternalId] [varchar](32) NULL,
[Member_ConsumerId] [varchar](32) NULL,
CONSTRAINT [PK_Member] PRIMARY KEY NONCLUSTERED
(
[Member_MemberId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

我正在使用 EF 4.0 从数据上下文运行查询,如下所示:
return Members.SingleOrDefault(member => member.ExternalId == externalId);

生成的 SQL 如下所示:
exec sp_executesql N'SELECT TOP (2) 
[Extent1].[Member_MemberId] AS [Member_MemberId],
[Extent1].[Member_ExternalId] AS [Member_ExternalId],
[Extent1].[Member_ConsumerId] AS [Member_ConsumerId]
FROM [dbo].[Member] AS [Extent1]
WHERE [Extent1].[Member_ExternalId] = @p__linq__0',N'@p__linq__0 varchar(8000)',@p__linq__0='Paul'

从性能 POV 来看,这个查询是次优的,因为它自动将 Member_ExternalId 列转换为 varchar(8000) , 当列本身被限制为 varchar(32) .
有没有办法强制 EF 生成与相应行大小相等的动态参数?

最佳答案

似乎没有直接实现这一点的方法。我认为这是一个内置功能,可以保证执行计划之间的一致性。同时,我用存储过程替换了查询。

关于sql - 如何强制 Entity Framework 4.0 生成与其对应的数据库列大小相等的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11295156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com