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

Far*_*ook 17 asp.net entity-framework asp.net-identity .net-core

当我IdentityUserAsp.Net中 使用模型IdentityEntityFramework,它会在数据库中创建一些标准字段.除以下两个字段外,所有字段都是自解释的.

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

我的怀疑是:

  1. 为什么我们需要这些标准化字段?
  2. 将其保存在数据库中的目的是什么?
  3. 这个字段在框架中使用的位置是什么?

Iva*_*oev 21

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

这些领域没有其他原因或用法.

  • @ brainoverflow98,以便能够将索引用于不区分大小写的搜索 (3认同)
  • @KonradViltersten 一个疯狂的猜测可能是选择大写字母,因为普通用户通常倾向于用全小写字母书写电子邮件。因此,当开发人员查看表上的数据并发现标准化字段全部为大写时,可能会提高开发人员对标准化字段的认识。如果选择小写字母进行规范化,尤其是初次开发人员可能会查看表并说“规范化字段与原始字段相同,那么有什么意义?”。当他们看到全部大写时,他们至少可以说“这里有些可疑”。正如我所说,这只是我的猜测。 (3认同)
  • 它在规范化中使用大写版本,这让我感到烦恼。在性能方面,如果我们也采用小写,我们会获得相同的结果。仅仅因为计算机对我们尖叫,索引的速度就不会更快...... (2认同)