When I use IdentityUser
model in Asp.Net Identity
with EntityFramework
, it creates some standard fields in the database. All the fields are self explanatory except for the below two fields.
NormalizedUsername
- Which contains the uppercase value of the Username NormalizedEmail
- Which contains the uppercase value of the Email My doubts are:
By my understanding, both fields are there for performance reasons. It's sort of explained in the following thread Normalization on UserName and Email causes slow performance and are used to validate the case insensitive uniqueness of the UserName
and Email
fields. They are persisted in the database in order be able to create index on them, thus making the lookups by the normalized user name and email sargable .
There is no other reason or usage of these fields.
Because in String.Compare("a", "A")
, "a"
is greater than "A"
based on the binary values. The above compare statment translates to String.Compare(01100001, 01000001). As you can see one value is greater than the other.
Normalization brings the property to UpperCase
(I believe) where SQL can index the UserName
binary values sequentially without any surprise out of sequence lower case letters and their respective binary values.
This improves performance when searching or querying the database.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.