Giới thiệu
Khi thiết kế một sơ đồ cơ sở dữ liệu, việc tải cơ sở dữ liệu phát triển với dữ liệu giả lập và thực hiện các câu lệnh SELECT, UPDATE, DELETE và INSERT là rất cần thiết để đảm bảo sơ đồ đáp ứng yêu cầu kinh doanh. Trong bài viết này, chúng ta sẽ khám phá cách lập trình mẫu với Entity Framework Core (EF Core), cung cấp các ví dụ thực tiễn và mẹo tối ưu hóa hiệu suất.
Nhà cung cấp dữ liệu
Trong ví dụ này, chúng ta sẽ sử dụng Microsoft SQL Server. Đây là một lựa chọn phổ biến cho các ứng dụng sử dụng EF Core.
Dự án ProtoType
Mã nguồn trong dự án BaseContextExampleApp
Đầu tiên, hãy tạo một dự án Console với tệp appsettings.json chứa chuỗi kết nối cơ sở dữ liệu phát triển và một phương thức để đọc nó.
Chuỗi kết nối trong appsettings sẽ được lấy từ một dự án ASP.NET Core, sẽ được sử dụng cho cơ sở dữ liệu. Các cài đặt đặc thù của ASP.NET Core không cần thiết và không gây hại cho ứng dụng.
json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"MainConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=BirthDaysDatabase;Integrated Security=True;Encrypt=False"
}
}
Chuỗi kết nối này sẽ được sử dụng trong một lớp tùy chỉnh bên dưới (được bao gồm trong mã nguồn trong một dự án lớp).
csharp
public abstract class ProtoTypeContext() : DbContext(BuildOptions())
{
private static DbContextOptions BuildOptions()
{
var builder = new DbContextOptionsBuilder()
.UseSqlServer(AppConnections.Instance.MainConnection);
// LƯU Ý - điều chỉnh dựa trên cài đặt biến môi trường của bạn
var env = Environment.GetEnvironmentVariable("CONSOLE_ENVIRONMENT") ?? "Production";
if (env.Equals("Development", StringComparison.OrdinalIgnoreCase))
{
builder.EnableSensitiveDataLogging()
.LogTo(message => Debug.WriteLine(message), LogLevel.Information);
}
return builder.Options;
}
}
Bây giờ, hãy thêm các gói NuGet EF Core phù hợp vào dự án console của bạn.
Cấu hình cơ sở dữ liệu
Bạn có thể cấu hình cơ sở dữ liệu theo hai cách: sử dụng phương pháp code first hoặc database first. Để sử dụng phương pháp code first, hãy thêm dự án lớp EnityLibrary như một tham chiếu dự án vào dự án console.
Thay đổi DbContext từ
csharp
public partial class Context : DbContext
Sang
csharp
public partial class Context : ProtoTypeContext
ℹ️ Lớp PrototypeContext cung cấp một cách nhất quán cho mỗi prototype hoặc bất kỳ dự án console nào không cần tiêm phụ thuộc.
Sự khác biệt giữa dự án console và ASP.NET Core
Sự khác biệt giữa hai loại dự án này rất nhỏ, điều đó có nghĩa là việc chuyển đổi từ dự án console sang ASP.NET Core là rất dễ dàng.
Viết các câu lệnh EF Core
Khi viết mã, bạn nên viết cho mỗi mô hình trong một lớp riêng để giữ cho mã được sạch sẽ và dễ bảo trì. Khi bạn đã hài lòng với việc triển khai, bạn có thể chuyển sang dự án ASP.NET Core.
Dự án ASP.NET Core
Mã nguồn trong BirthDaysApp
Đăng ký DbContext như sau:
csharp
builder.Services.AddDbContext<Context>(options => options.UseSqlServer(
builder.Configuration.GetConnectionString("MainConnection")));
Tóm tắt
Khi sử dụng cho tất cả các dự án lập trình mẫu, phương pháp này cung cấp một mẫu lặp lại và tính nhất quán, thay vì xử lý từng dự án một cách khác nhau.
Các thực tiễn tốt nhất
- Giữ mã gọn gàng: Viết mã cho mỗi mô hình trong lớp riêng để dễ quản lý.
- Kiểm tra kỹ lưỡng: Chạy các câu lệnh SQL để đảm bảo tất cả hoạt động như mong đợi.
Những cạm bẫy thường gặp
- Không cấu hình môi trường: Đảm bảo rằng bạn đã cấu hình đúng biến môi trường để tránh lỗi.
- Quên cập nhật chuỗi kết nối: Kiểm tra chuỗi kết nối khi chuyển giữa môi trường phát triển và sản xuất.
Mẹo tối ưu hóa hiệu suất
- Sử dụng
AsNoTracking(): Khi bạn chỉ cần đọc dữ liệu mà không cần sửa đổi, hãy sử dụngAsNoTracking()để cải thiện hiệu suất. - Sử dụng batch processing: Khi thực hiện nhiều cập nhật, hãy sử dụng batch processing để giảm thiểu số lần giao tiếp với cơ sở dữ liệu.
Khắc phục sự cố
- Lỗi kết nối cơ sở dữ liệu: Kiểm tra lại chuỗi kết nối và đảm bảo rằng SQL Server đang chạy.
- Lỗi truy vấn: Sử dụng công cụ SQL Server Profiler để kiểm tra và tối ưu hóa truy vấn.
FAQ
- Làm thế nào để kết nối với cơ sở dữ liệu khác?
Chỉ cần thay đổi chuỗi kết nối trong appsettings.json. - Có cần cài đặt EF Core trên máy không?
Có, bạn cần cài đặt các gói NuGet EF Core tương ứng.
Kết luận
Hy vọng rằng bài viết này đã cung cấp cho bạn cái nhìn sâu sắc về cách lập trình mẫu với EF Core và giúp bạn áp dụng vào dự án của mình. Hãy thử các phương pháp và mẹo mà chúng tôi đã chia sẻ để tối ưu hóa quy trình phát triển của bạn. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến dưới bài viết này!