私は、Entity Frameworkを使用して、かなり標準的なASP IDと考えているものを実装しました。私は、標準のAspNetUserテーブルにいくつかのプロパティを追加しましたが、私はヌル値を持たないカラムとしてユーザ名カラムを持っています。 SignInManagerはPasswordSignInAsyncを処理するときAspIdentity EFとUserName
は、しかし、それは、次のSQLを生成:
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[FullName] AS [FullName],
[Extent1].[ClientId] AS [ClientId],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName],
[Extent1].[DateCreated] AS [DateCreated],
[Extent1].[UserOid] AS [UserOid],
[Extent1].[Email] AS [Email],
[Extent1].[EmailConfirmed] AS [EmailConfirmed],
[Extent1].[PasswordHash] AS [PasswordHash],
[Extent1].[SecurityStamp] AS [SecurityStamp],
[Extent1].[PhoneNumber] AS [PhoneNumber],
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed],
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled],
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc],
[Extent1].[LockoutEnabled] AS [LockoutEnabled],
[Extent1].[AccessFailedCount] AS [AccessFailedCount],
[Extent1].[UserName] AS [UserName]
FROM [dbo].[AspNetUsers] AS [Extent1]
WHERE
(
UPPER([Extent1].[UserName]) = UPPER(@p__linq__0)
)
OR
(
(UPPER([Extent1].[UserName]) IS NULL)
AND (UPPER(@p__linq__0) IS NULL)
)
誰も私に次のように言うことができる: usernameはできません1.なぜEFは、where句であるNULL句を生成していますヌルですか? 2.これをやめる方法。 3. UsernameのUpperステートメントを停止する方法はありますか?
_ "UsernameのUpperステートメントを停止するにはどうしますか?" - あなたの質問の中核があるのですが、なぜそれを聞いていますか?アイデンティティで大文字と小文字を区別するユーザ名を使用しますか? – CodeCaster