繁体   English   中英

.NET 核心 IdentityUser 模型中规范化电子邮件和用户名的用途是什么?

[英]What is the use of Normalized Email & UserName in .NET core IdentityUser Model?

当我在Asp.Net Identity使用IdentityUser模型和EntityFramework ,它会在数据库中创建一些标准字段。 除了以下两个字段外,所有字段都是不言自明的。

  • NormalizedUsername - 包含用户名的大写值
  • NormalizedEmail - 包含电子邮件的大写值

我的疑问是:

  1. 为什么我们需要这些标准化字段? 它在哪里使用?
  2. 将它持久化到数据库中的目的是什么?

据我了解,出于性能原因,这两个字段都存在。 在以下线程中对用户名和电子邮件的规范化进行了解释,导致性能降低,并用于验证UserNameEmail字段的不区分大小写的唯一性。 它们保存在数据库中,以便能够在它们上创建索引,从而通过规范化的用户名和电子邮件sargable 进行查找

这些字段没有其他原因或用途。

因为在String.Compare("a", "A") ,基于二进制值, "a"大于"A" 上面的比较语句转换为 String.Compare(01100001, 01000001)。 如您所见,一个值大于另一个值。

规范化将属性带到UpperCase (我相信),其中 SQL 可以按顺序索引UserName二进制值,而不会出现任何意外的乱序小写字母及其各自的二进制值。

这提高了搜索或查询数据库时的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM