Hướng Dẫn Có nên dùng migration data asp.net core - Lớp.VN

Kinh Nghiệm về Có nên dùng migration data asp core Mới Nhất

Hoàng Quốc Trung đang tìm kiếm từ khóa Có nên dùng migration data asp core được Cập Nhật vào lúc : 2022-12-01 03:52:06 . Với phương châm chia sẻ Kinh Nghiệm về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Admin lý giải và hướng dẫn lại nha.
(netcore) - Sau đây, .NET Core VN xin ra mắt về chạy migration cho Identity trong ASP.NET Core.Trong chương này, chúng tôi sẽ thảo luận về việc di tán Danh tính. Trong ASP.NET Core MVC, những tính năng xác thực và nhận dạng được thông số kỹ thuật trong tệp Startup.cs.

public void ConfigureServices(IServiceCollection services) services.AddMvc(); services.AddEntityFramework() .AddSqlServer() .AddDbContextoption. UseSqlServer(Configuration["database:connection"])); services.AddIdentity() .AddEntityFrameworkStores();

Bất cứ lúc nào bạn thực hiện thay đổi đối với một trong những 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 tớ, rất hoàn toàn có thể bạn sẽ phải tạo một tập lệnh di tán mới để áp dụng vào cơ sở tài 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 chính bới giờ đây 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 tiếp tục tạo một lược đồ để tàng trữ tất cả thông tin về những thực thể mà nó quản lý.

using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity; namespace FirstAppDemo.Models public class FirstAppDemoDbContext : IdentityDbContext public DbSet 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ờ tất cả chúng ta hãy mở dấu nhắc lệnh và đảm nói rằng tất cả chúng ta đang ở vị trí có tệp project.json cho dự án công trình bất Động sản của tất cả chúng ta.

Dấu nhắc lệnh
Chúng ta cũng hoàn toàn có thể nhận được những lệnh Entity Framework bằng phương pháp 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 hoàn toàn có thể thêm một di tán từ đây. Chúng tôi cũng cần phải đáp ứng một tên để di tá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 tán hoàn tất, bạn sẽ có tệp v2 trong thư mục di tán của tớ.

Tập tin V2
Bây giờ chúng tôi muốn áp dụng việc di tán đó vào cơ sở tài liệu của tớ bằng phương pháp chạy lệnh update cơ sở tài liệu của dnx ef.

Cập nhật cơ sở tài liệu
Entity Framework sẽ thấy có một di tán cần phải áp dụng và nó sẽ thực hiện di tán đó.

Nếu bạn vào SQL Server Object Explorer, bạn sẽ thấy bảng Nhân viên mà tất cả chúng ta đã tạo trước đó. Bạn cũng tiếp tục thấy một số trong những bảng tương hỗ update phải tàng trữ người tiêu dùng, khiếu nại, vai trò và một số trong những bảng ánh xạ ánh xạ người tiêu dùng đến những vai trò rõ ràng.

Ở phần trước tất cả chúng ta đã cùng nhau xây dựng ứng dụng nhưng chúng đang sử dụng một list việc làm hàng fake được viết cứng trong code, ở phần này tất cả chúng ta sẽ link chúng với một cơ sở tài liệu để mọi thứ trở nên hoàn hảo nhất hơn.

Viết mã cơ sở tài liệu hoàn toàn có thể là trở ngại vất vả. Trừ khi bạn thực sự biết những gì bạn đang làm, nếu không bạn nên sử dụng những chuỗi truy vấn thô vào ứng dụng của tớ. Trình ánh xạ đối tượng quan hệ (ORM) giúp bạn viết mã tương tác với cơ sở tài liệu thuận tiện và đơn giản hơn bằng phương pháp thêm một lớp trừu tượng giữa mã của bạn với chính cơ sở tài liệu. Hibernate trong Java và ActiveRecord trong Ruby là hai ORM nổi tiếng.

Có một số trong những ORM cho .NET, một trong số đó được xây dựng bởi Microsoft và được tích hợp sẵn trong Asp.Net Core là Entity FrameWork Core. Entity FrameWork Core giúp thuận tiện và đơn giản link với một số trong những loại cơ sở tài liệu rất khác nhau và được cho phép bạn sử dụng câu lệnh C# để tạo truy vấn cơ sở tài liệu và ánh xạ trở lại những model trong C#.

Entity FrameWork Core hoàn toàn có thể link tới những cơ sở tài liệu quan hệ như SQL Server, PostgreSQL, MySQL và cơ sở tài liệu NOSQL như Mongo. Ở trong những bài tiếp theo tất cả chúng ta sẽ sử dụng SQLite để giúp mọi thứ dẽ dàng thiết lập.

Kết nối tới một cơ sở tài liệu:

Có một số trong những thứ bạn cần để link Entity FrameWork Core tới cơ sở tài liệu. Ngay khi bạn chạy câu lệnh dotnet new và quy mô MVC + Individual Auth để setup dự án công trình bất Động sản của bạn thì mọi thứ đã được tích hợp sẵn:

    The Entity Framework Core packages: Chúng được gồm có mặc định trong Asp.Net core.A database: Tệp app.db trong thư mục gốc của một dự án công trình bất Động sản là một cơ sở tài liệu SQLite nhỏ được tạo cho bạn bởi dotnet new. SQLite là một công cụ cơ sở tài liệu nhẹ, hoàn toàn có thể chạy mà không yêu cầu bạn setup bất kỳ công cụ tương hỗ update nào trên máy của bạn, vì vậy thật hợp lý khi sử dụng chúng ở đây.

    A database context class: Database context là một lớp C# đáp ứng một điểm vào của cơ sở tài liệu. Đó là cách mã của bạn sẽ tương tác với một cơ sở tài liệu để đọc và lưu những mục. Một lớp context cơ bản đã tồn tại trong tệp Data/ApplicationDBContext.csA connection string: Cho dù bạn link với cơ sở tài liệu cụ bộ (như SQLite) hay cơ sở tài liệu được tàng trữ ở một địa điểm khác, bạn sẽ cần định nghĩa một chuỗi chứa tên hoặc địa chỉ cơ sở tài liệu để link. Chúng đã được thiết lập cho bạn trong tệp appsettings.json. Chuỗi link cho cơ sở tài liệu SQLite là DataSource=app.db.

Entity Framework Core sử dụng database context và chuỗi link cơ sở tài liệu để link tới databse. Bạn cần cho Entity Framework core biết context, chuỗi link, nơi đáp ứng tài liệu trong phương thức configureServices của lớp Startup:

services.AddDbContext(options =>
options.UseSqlite(
Configuration.GetConnectionString(“DefaultConnection”)));

Đoạn mã trên thêm ApplicationDbContext vào phân vùng Service và nói cho Entity Framework Core để sử dụng cơ sở tài liệu SQLite và chuỗi link được thông số kỹ thuật trong file appsettings.json.

Như bạn hoàn toàn có thể thấy, dotnet new tạo ra rất nhiều thứ cho bạn, cơ sở tài liệu được thiết lập để sẵn sàng sử dụng.Tuy nhiên, nó không còn bất kỳ bảng nào để tàng trữ những việc làm, bạn cần update context và di thay đổi cơ sở tài liệu.

Cập nhật Context:

Thêm một thuộc tính DbSet tới ApplicationDbcontext, phía dưới hàm khởi tạo:

public DbSetItems get; set;

Một DbSet mô tả một bảng, với việc khởi tạo một thuộc tính DbSet, bạn đang nói với Entity Framework Core rằng bạn muốn tàng trữ những thực thể TodoItem trong một bảng mang tên và Items.

Bạn đã update lớp context, nhưng giờ đây có một vấn đề nhỏ: Context và cơ sở tài liệu hiện không đồng bộ, vì thực tế không còn bảng Items trong cơ sở tài liệu. Để update những thay đổi bạn cần tạo một migration.

Khởi tạo một Migration:

Migration theo dõi những thay đổi đối với cơ sở tài liệu theo thời gian.Chúng hoàn toàn có thể hoàn tác lại một tập những thay đổi, hoặc tạo cơ sở tài liệu thứ hai có cùng cấu trúc như lần đầu tiên. Với những Migration, bạn có một lịch sử sửa đổi đầy đủ như thêm sửa xóa những cột hoặc toàn bộ bảng.

Trong bài trước bạn đã thêm một Items được đặt vào context. Vì toàn cảnh hiện tại gồm có một tập hợp không tồn tại trong cơ sở tài liệu, bạn cần tạo một migration để update cơ sở tài liệu:

dotnet ef migrations add AddItems

Điều này tạo ra một migration mới gọi là AddItem. Nếu bạn mở thư mục Data/migrations bạn sẽ thấy một vài tệp:

Tệp Migration mới của bạn có tiền tố với dấu thời gian khi bạn tạo nó. Nếu bạn mở tệp migration của bạn, bạn sẽ nhìn thấy những phương thức Up, Down:

Data/Migrations/_AddItems.cs
protected override void Up(MigrationBuilder migrationBuilder)

        // (… some code)

       migrationBuilder.CreateTable(
             name: “Items”,
             columns: table => new
             
                    Id = table.Column(nullable: false),
                    DueAt = table.Column(nullable: true),
                    IsDone = table.Column(nullable: false),
                    Title = table.Column(nullable: true)
            ,
            constraints: table =>
           
                  table.PrimaryKey(“PK_Items”, x => x.Id);
            );

        // (some code…)

protected override void Down(MigrationBuilder migrationBuilder)

         // (… some code)

        migrationBuilder.DropTable(
               name: “Items”);

       // (some code…)

Phương thức up chạy khi bạn áp dụng migration vào database. Vì bạn đã thêm Dbsetvào database context, Entity FrameWork Core sẽ tạo bảng Items khi bạn áp dụng migration.Phương thức Down thực hiện ngược lại: nếu bạn cần hoàn tác, bảng Items sẽ được xóa bỏ.

Giải pháp cho những hạn chế SQLite:

Có một số trong những hạn chế của SQLite gây khó dễ nếu bạn nỗ lực chạy migration nguyên bản. Cho tới khi điều này được khắc phục, hãy xử lý và xử lý bằng phương pháp:

Xóa dòng migrationBuilder.AddForeignKey trong phương thức up và dòng migrationBuilder.DropForeignKey trong phương thức down. Nếu bạn sử dụng cơ sở tài liệu SQL chính thức như SQL Server hoặc MySQL, bạn sẽ tránh việc phải làm điều này.

Áp dụng migration:

Bước ở đầu cuối sau khi khởi tạo một migration là thực sự áp dụng nó vào cơ sở tài liệu:
dotnet ef database update

Câu lệnh sẽ báo cho Entity FrameWork Core tạo bảng Items trong cơ sở tài liệu.

Mọi thứ gần như thể đã hoàn thành xong, trong bài tiếp theo tất cả chúng ta sẽ đi khởi tạo một lớp dịch vụ mới cho cơ sở tài liệu của tất cả chúng ta.

Tải thêm tài liệu liên quan đến nội dung bài viết Có nên dùng migration data asp core

Clip Có nên dùng migration data asp core ?

Bạn vừa đọc tài liệu Với Một số hướng dẫn một cách rõ ràng hơn về Clip Có nên dùng migration data asp core tiên tiến nhất

Chia Sẻ Link Download Có nên dùng migration data asp core miễn phí

Pro đang tìm một số trong những Chia SẻLink Download Có nên dùng migration data asp core Free.

Thảo Luận thắc mắc về Có nên dùng migration data asp core

Nếu sau khi đọc nội dung bài viết Có nên dùng migration data asp core vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Mình lý giải và hướng dẫn lại nha #Có #nên #dùng #migration #data #aspnet #core - 2022-12-01 03:52:06
Post a Comment (0)
Previous Post Next Post