22 Temmuz 2019 Pazartesi

Asp.Net Simple Membership Db Migration To Asp.Net Mvc

Merhabalar,
Bir zamanlar göz bebeğimiz olan Asp.Net Web Formlar ile gelen membership yapısı yerini .net core Mvc ile devam eden sürecete migration'a ihtiyaç duyabilir. Microsft bu konu ile ilgili zaten bir makale yayımladı. Arada kalan asp.net Mvc üyelik database aktarımları için şu şekilde bir yol izlenebilir.

Default migration için aşağıdaki script'i çağırabilir.


-- THIS SCRIPT NEEDS TO RUN FROM THE CONTEXT OF THE MEMBERSHIP DB
BEGIN TRANSACTION MigrateUsersAndRoles
USE TargetDatabase

-- INSERT USERS
INSERT INTO TargetDatabase.dbo.AspNetUsers
            (Id,
             UserName,           
             PasswordHash,
             SecurityStamp,
             EmailConfirmed,
             PhoneNumber,
             PhoneNumberConfirmed,
             TwoFactorEnabled,
             LockoutEndDateUtc,
             LockoutEnabled,
             AccessFailedCount,
             Email
             )
SELECT aspnet_Users.UserId,
       aspnet_Users.UserName,
   aspnet_Membership.Password,      
       NewID(),    
       1,
       null,
       0,      
       0,
       CASE        
         WHEN aspnet_Membership.IsLockedOut = 1 THEN Dateadd(year, 1000,Sysutcdatetime())
         ELSE NULL
       END,
       aspnet_Membership.IsLockedOut,     
       0,
       aspnet_Membership.Email
       
FROM   aspnet_Users
       LEFT OUTER JOIN aspnet_Membership
                    ON aspnet_Membership.ApplicationId =
                       aspnet_Users.ApplicationId
                       AND aspnet_Users.UserId = aspnet_Membership.UserId
       LEFT OUTER JOIN Target.dbo.AspNetUsers
                    ON aspnet_Membership.UserId = AspNetUsers.Id
WHERE  AspNetUsers.Id IS NULL

-- INSERT ROLES
INSERT INTO TargetDatabase.dbo.AspNetRoles(Id, Name)
SELECT RoleId, RoleName
FROM aspnet_Roles;

-- INSERT USER ROLES
INSERT INTO TargetDatabase.dbo.AspNetUserRoles(UserId, RoleId)
SELECT UserId, RoleId
FROM aspnet_UsersInRoles;

IF @@ERROR <> 0
  BEGIN
    ROLLBACK TRANSACTION MigrateUsersAndRoles
    RETURN
  END

COMMIT TRANSACTION MigrateUsersAndRoles