Trong Entity Framework Core, có thể có nhiều cơ sở dữ liệu cần được kết nối hoặc nếu bất kỳ nhà cung cấp cơ sở dữ liệu nào cần kết nối với cơ sở dữ liệu.
Sau khi tạo chuỗi kết nối giữa cơ sở dữ liệu và các nhà cung cấp cơ sở dữ liệu, chúng ta cần cung cấp cho nó cho DbContext
để xử lý dữ liệu cho ứng dụng.
Có một số phương pháp để cấu hình các chuỗi kết nối cho DbContext
.
Trên DbContext
nhu cầu dữ liệu của họ phải được cập nhật thường xuyên để cung cấp kết quả tốt hơn, để duy trì thủ tục này các dữ liệu cần phải được ghi đè lên DbContext
.
DbConetxt
bằng cách sử dụng chuỗi kết nối, phương thức OnConfiguring
được sử dụng để ghi đè dữ liệu.OnConfiguring
là nếu nó được sử dụng trên chuỗi kết nối, nó sẽ ghi đè lên tất cả các cấu hình khác cho cơ sở dữ liệu đó.protected override void OnConfiguring(DbContextOptionsBuilder opBuilder)
{
opBuilder.UseSqlServer("server=.;database=myEFCoreDB;trusted_connection=true;");
}
Trong các ứng dụng .NET Core sử dụng Entity Framework Core, chuỗi kết nối có thể được cấu hình bằng phương thức mở rộng AddDbContext
của IServiceCollection
trong lớp Startup
.
Trong Entity Framework Core, chuỗi kết nối có thể được cấu hình cho DbContext
để sử dụng trong các ứng dụng ASP.NET Core MVC và ứng dụng .NET Core Console.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyEFCoreDbContext>(options =>
{
options.UseSqlServer("server=.;database=myEFCoreDb;trusted_connection=true;"));
});
}
Ứng dụng ASP.NET Core MVC
Trước đây trong ASP.NET, chuỗi kết nối được lưu trữ trong file web.config
, nhưng bây giờ ASP.NET Core có thể trích xuất và đọc các chuỗi kết nối từ các vị trí khác nhau, chẳng hạn như file appsettings.json
, đối số dòng lệnh và biến môi trường, v.v.
ASP.NET Core sử dụng mô hình kiến trúc Model-View-Controller (MVC). Mô hình này chia ứng dụng thành ba thành phần chính là model, view và controller.
Các thành phần này làm việc cùng nhau để cung cấp các kết quả yêu cầu từ mô hình.
Trong bất kỳ ứng dụng MVC nào sử dụng Entity Framework Core, DbContext
được đưa vào (inject) bằng cách sử dụng dependency injection trong phương thức ConfigureServices
trong lớp Startup
.
Để đọc thông tin cấu hình từ lớp Startup
, cần có một đối tượng IConfiguration
, đối tượng này có thể được đưa vào (inject) bằng dependency injection.
Sau đó, các nhà phát triển có thể sử dụng phương thức GetConnectionString
của IConfiguration
để đọc cấu hình chuỗi kết nối trong file appsettings.json
.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<EFCoreDBContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("EFCoreDBContext")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<EFCoreDBContext>()
.AddDefaultTokenProviders();
services.AddRazorPages();
}
}
Khi chương trình khởi chạy, chuỗi kết nối sẽ được truyền vào cho DbContext
.
Để điều này xảy ra, cần phải tạo một lớp context EFCoreDBContext
kế thừa từ lớp DbContext
.
public partial class EFCoreDBContext : DbContext
{
public EFCoreDBContext ()
{
}
public EFCoreDBContext(DbContextOptions<EFCoreDBContext> options) : base(options)
{
}
public virtual DbSet<Actors> Actors{ get; set; }
public virtual DbSet<Movies> Movies{ get; set; }
public virtual DbSet<Biographies> Biographies{ get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
//warning You can move this code to protect potentially senstive information
//in connection string.
optionsBuilder.UseSqlServer("Data Source= .;Initial Catalog=EFCoreDB;User ID=test;Password=test123");
}
}
}
Entity Framework Core cung cấp phương thức mở rộng AddDbContext
, có thể được sử dụng để đăng ký lớp context của chúng ta.
Các tùy chọn của DbContext
được cấu hình bằng cách sử dụng DbContextOptionBuilder
. SQL Server được cấu hình làm nhà cung cấp cơ sở dữ liệu thông qua phương thức UseSQLServer
.
Ứng dụng .NET Core Console
Trong ứng dụng .NET Core, dependency injection được thiết lập theo cách thủ công không giống như ASP.NET Core, sử dụng để thực hiện việc này tự động.
appsettings.json
không được tạo ra trong .NET Core, do đó nó phải được tạo ra thủ công.IConfigurations
.Để làm điều đó, cần cài đặt các gói sau:
Sau khi cài đặt thành công, các chuỗi kết nối có thể được đọc bằng mã dưới đây:
class Program
{
static void Main(string[] args)
{
var newbuilder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
IConfiguration iconfig = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
Console.WriteLine($" Hello { iconfig["fullname"] } !");
}
}
Để truyền thêm chuỗi kết nối cho DbContext
, hãy tạo thêm một lớp context. Để tham khảo lớp context, hãy xem ví dụ ứng dụng ASP.NET Core MVC ở phía trên.
Đây là cách chuỗi kết nối được cung cấp cho DbContext
để sử dụng cho ứng dụng ASP.NET Core MVC và ứng dụng .NET Core Console.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cấu hình sử dụng attribute, Fluent API để ghi đè các quy ước mặc đình trong Entity Framework Core.
Bạn sẽ tìm hiểu các quy ước được tính hợp sẵn trong Entity Framework Core để tạo khóa chính, khóa ngoại, bảng, lược đồ, cột, kiểu dữ liệu, index ...
Trong hướng dẫn này, bạn sẽ tìm hiểu cách tạo, sửa đổi và xóa mối quan hệ một - nhiều trong Entity Framework Core.
Trong hướng dẫn này, bạn sẽ tìm hiều về các mối quan hệ một - nhiều, nhiều - nhiều và một - một trong Entity Framework Core.