Trong chương này, chúng tôi sẽ thảo luận về việc di chuyển Danh tính. Trong ASP.NET Core MVC, các tính năng xác thực và nhận dạng được cấu hình trong tệp Startup.cs.
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddEntityFramework() .AddSqlServer() .AddDbContext<FirstAppDemoDbContext>option. UseSqlServer(Configuration["database:connection"])); services.AddIdentity<User, IdentityRole>() .AddEntityFrameworkStores<FirstAppDemoDbContext>(); }
Bất cứ khi nào bạn thực hiện thay đổi đối với một trong các lớp thực thể hoặc bạn thực hiện thay đổi đối với lớp dẫn xuất DBContext của mình, rất có thể bạn sẽ phải tạo một tập lệnh di chuyển mới để áp dụng vào cơ sở dữ liệu và đưa lược đồ đồng bộ với mã trong mã của bạn .
Đây là trường hợp trong ứng dụng của chúng tôi bởi vì bây giờ chúng tôi lấy được lớp FirstAppDemoDbContext của chúng tôi từ lớp IdentityDbContext và nó chứa DbSets của riêng nó và nó cũng sẽ tạo một lược đồ để lưu trữ tất cả thông tin về các thực thể mà nó quản lý.
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity; namespace FirstAppDemo.Models { public class FirstAppDemoDbContext : IdentityDbContext<User> { public DbSet<Employee> Employees { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Data Source = (localdb)\\MSSQLLocalDB; Initial Catalog = FirstAppDemo;Integrated Security = True; Connect Timeout = 30;Encrypt = False; TrustServerCertificate = True;ApplicationIntent = ReadWrite; MultiSubnetFailover = False"); } } }
Bây giờ chúng ta hãy mở dấu nhắc lệnh và đảm bảo rằng chúng ta đang ở vị trí có tệp project.json cho dự án của chúng ta.
Dấu nhắc lệnh
Chúng ta cũng có thể nhận được các lệnh Entity Framework bằng cách gõ dnx ef.
Ex
Tệp project.json của chúng tôi có một phần ánh xạ từ khóa này của efex với EntityFramework.Commands.
"lệnh": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
}
Chúng ta có thể thêm một di chuyển từ đây. Chúng tôi cũng cần cung cấp một tên để di chuyển. Hãy để chúng tôi sử dụng v2 cho phiên bản 2 và nhấn enter.
V2 cho phiên bản
Khi quá trình di chuyển hoàn tất, bạn sẽ có tệp v2 trong thư mục di chuyển của mình.
Tập tin V2
Bây giờ chúng tôi muốn áp dụng việc di chuyển đó vào cơ sở dữ liệu của mình bằng cách chạy lệnh cập nhật cơ sở dữ liệu của dnx ef.
Cập nhật cơ sở dữ liệu
Entity Framework sẽ thấy có một di chuyển cần được áp dụng và nó sẽ thực hiện di chuyển đó.
Nếu bạn vào SQL Server Object Explorer, bạn sẽ thấy bảng Nhân viên mà chúng ta đã tạo trước đó. Bạn cũng sẽ thấy một số bảng bổ sung phải lưu trữ người dùng, khiếu nại, vai trò và một số bảng ánh xạ ánh xạ người dùng đến các vai trò cụ thể.
Bảng bổ sung
Tất cả các bảng này có liên quan đến các thực thể mà khung Nhận dạng cung cấp.
Hãy để chúng tôi xem nhanh bảng người dùng.
Bảng người dùng
Bây giờ bạn có thể thấy rằng các cột trong bảng AspNetUsers bao gồm các cột để lưu trữ tất cả các thuộc tính mà chúng ta đã thấy trên Người dùng Danh tính mà chúng ta được thừa hưởng và các trường của nó như UserName và PasswordHash. Vì vậy, bạn đã sử dụng một số dịch vụ Nhận dạng tích hợp vì chúng cũng có khả năng tạo người dùng và xác thực mật khẩu của người dùng.