1

AspNetUsers 테이블에 사용자를 삽입 할 수 없습니다, 그러나 나는 다음과 같은 오류 얻을 :내가 저장 프로 시저를 사용하여 AspNetUsers 테이블을 채우기 위해 노력하고

Msg 515, Level 16, State 2, Procedure Insert_Users, Line 36 Cannot insert the value NULL into column 'Id', table 'MyDatabase.dbo.AspNetUsers'; column does not allow nulls. INSERT fails.

난에 다음과 같은 속성이 존재해야한다는 다른 게시물에 읽기 열 Id : [DatabaseGenerated(DatabaseGeneratedOption.Identity)], 그러나 나는 물리적으로 선언 된 곳을 찾을 수 없습니다.

시간이 없으므로 모든 사용자를 수동으로 삽입하고 싶지 않으므로 최대한 빨리해야합니다.

BEGIN 
SET NOCOUNT ON; 
DECLARE @id uniqueidentifier 
DECLARE @email nvarchar(256) 
DECLARE @emailconfirmed bit 
SET @emailconfirmed = 0 
DECLARE @twofactorenabled bit 
SET @twofactorenabled = 0 
DECLARE @lockoutenabled bit 
SET @lockoutenabled = 1 
DECLARE @accessFailed bit 
SET @accessFailed = 1 
DECLARE @username nvarchar(256) 
DECLARE @fname nvarchar(50) 
DECLARE @lname nvarchar(50) 

DECLARE @athleteKey int 
SET @athleteKey = 41809 

DECLARE @atheletsCount int 
SET @atheletsCount = 0; 
SET @atheletsCount = (SELECT COUNT(*) FROM [BIBD].[dbo].[Athlete]) 

WHILE @athleteKey < @atheletsCount 
    SET @id = NEWID() --Line 36 
    print CAST(@id AS nvarchar(128)) 
    SET @fname = (SELECT FirstName FROM [BIBD].[dbo].[Athlete] where [email protected]) 
    SET @lname = (SELECT LastName FROM [BIBD].[dbo].[Athlete] where [email protected]) 
    SET @username = CONCAT(LOWER(@fname),'.',LOWER(@lname)) 
    SET @email = CONCAT(LOWER(@fname), '.', LOWER(@lname), '@gmail.com') 

    INSERT INTO [MyDatabase].[dbo].[AspNetUsers] 
     (Id 
     ,Email 
     ,EmailConfirmed 
     ,[TwoFactorEnabled] 
     ,LockoutEnabled 
     ,AccessFailedCount 
     ,UserName 
     ,FirstName 
     ,LastName) 
    VALUES 
      (CAST(@id AS nvarchar(128)) 
      ,@email 
      ,@emailconfirmed 
      ,@twofactorenabled 
      ,@lockoutenabled 
      ,@accessFailed 
      ,@username 
      ,@fname 
      ,@lname) 

    IF @athleteKey % 5 = 0 
     INSERT INTO [MyDatabase].[dbo].[AspNetUserRoles] 
        (UserId,RoleId) VALUES (@id, 3) 
    ELSE 
     INSERT INTO [MyDatabase].[dbo].[AspNetUserRoles] 
        (UserId,RoleId) VALUES (@id, 4) 

    SET @athleteKey = @athleteKey+1 
END 
+0

저장 프로 시저 란 무엇입니까? – ESG

+0

id의 열 데이터 형식은 무엇입니까? – Ian

+0

@Ian nvarchar (128) – user1012732

답변

0

WHILE 루프에는 BEGIN-END가 필요합니다.
그렇지 않으면 값을 @id에 할당하지 않고 루프를 처리하지 않습니다.

관련 문제