gpt4 book ai didi

sql-server - 如何让 NHibernate 停止使用 nvarchar(4000) 来插入参数字符串?

转载 作者:行者123 更新时间:2023-12-02 10:06:42 25 4
gpt4 key购买 nike

我需要优化由域实体上的保存(插入查询)生成的查询。我已经使用 Fluent NHibernate 配置了 NHibernate。

下面是 NHibernate 在插入用户对投票的响应期间生成的查询:

exec sp_executesql N'INSERT INTO dbo.Response (ModifiedDate, IpAddress, CountryCode, 
IsRemoteAddr, PollId) VALUES (@p0, @p1, @p2, @p3, @p4); select SCOPE_IDENTITY()',N'@p0
datetime,@p1 nvarchar(4000),@p2 nvarchar(4000),@p3 bit,@p4 int',
@p0='2001-07-08 03:59:05',@p1=N'127.0.0.1',@p2=N'US',@p3=1,@p4=2

如果查看 IpAddressCountryCode 的输入参数,人们会注意到 NHibernate 正在使用nvarchar(4000)。问题是 nvarchar(4000) 远远大于我对 IpAddressCountryCode 的需要,并且由于我需要的高流量和托管要求优化数据库的内存使用。

以下是这些列的 Fluent NHibernate 自动映射覆盖:

    mapping.Map(x => x.IpAddress).CustomSqlType("varchar(15)");
mapping.Map(x => x.CountryCode).CustomSqlType("varchar(6)");

这并不是我看到不必要的 nvarchar(4000) 弹出的唯一地方。

如何控制 NHibernatenvarchar(4000) 字符串表示的使用?

如何更改此 insert 语句以使用正确大小的输入参数?

最佳答案

Type指定为带有LengthNHibernateUtil.AnsiString,而不是使用CustomSqlType。

关于sql-server - 如何让 NHibernate 停止使用 nvarchar(4000) 来插入参数字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626394/

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