如果我使用实体框架(将现有数据库迁移到EF)将字符串写入SQL Server表,然后在SQL Server Management Studio中测量字符串长度,则说明我的字符串太长。不同的排序规则类型似乎在字符串的末尾添加了一堆空白。
是否必须显式设置ef的排序规则类型?如果是这样,有没有比
this
?
获取默认排序规则:
SELECT SERVERPROPERTY('collation') SQLServerCollation
结果:
SQL_Latin1_General_CP1_CI_AS
我这样测量了字符串(当字符串为“bill”时返回51个字符):
SELECT
LEN(CONCAT(first_name, '!' COLLATE SQL_Latin1_General_CP1_CI_AS))
FROM
[GreenCardSite].[dbo].[AppUser]
WHERE
user_id = 16840
注意!添加到字符串结尾,因为默认情况下,SQL Server在计算长度时不测量空白。此外,当我在不指定排序规则的情况下运行此命令时,我得到一个错误:
无法解决concat操作中“sql拉丁1_general_cp1_ci_as”和“拉丁1_general_100_ci_as”之间的排序规则冲突。
AppUser
EF级:
[Table("AppUser")]
public partial class AppUser
{
[Key]
public int user_id { get; set; }
[StringLength(50)]
public string first_name { get; set; }
[StringLength(50)]
public string last_name { get; set; }
.....