Entity Framework – DbContext là gì?

Trong các bài viết trước chúng ta đã tìm hiểu về Entity Framework và các thành phần cơ bản của nó là Entity Data Model. Bài viết này sẽ giúp bạn hiểu xâu hơn về Entity Framework.

1. DbContext là gì?

Entity Framework cho phép bạn có thể query, insert, update ,delete dữ liệu thông qua DbContext. Hay nói cách khác Entity Framework sử dụng DbContext để kết nối dữ liệu với Database. Nó là trung gian kết nối giữa các Entities sinh ra trong ứng dụng của bạn và Database.

2. Entity Framework – Database first.

Chúng ta sẽ lấy một ví dụ về Entity Framework sử dụng mô hình Database First. Trước khi thử tạo ra một DbContext.
Bước 1: trước tiên bạn hãy tạo một bảng tên là Student trong database QLSV. .

Bước 2: Mở Visual Studio 2013, File=>New=>Project, tạo một project console tên là SchoolManagement.

Bước 3: Tại cửa sổ solution Explorer, click chuột phải vào project, chọn Add=>New Item.

Tại cửa sổ Add New Item đang mở, chọn ADO.NET Entity Data Model, nhập StudentModel trong ô textbox, click Add.

Bước 4: Cửa sổ Entity Data Model Wizard sẽ hiển thị, có 4 options, chúng ta sẽ chọn option đầu tiên EF Designer from database (đây là tùy chọn sử dụng mô hình Database First), sau đó click Next.

Bước 5: Giữ nguyên chuỗi kết nối theo gợi ý của Visual Studio, hoặc bạn đặt lại tên cho chuỗi kết nối này tại ô textbox bên dưới. Chuỗi kết nối này sẽ tự động ghi vào file App.Config.

Bước 6: màn hình hiện lên 2 options phiên bản Entity Framework.

Bước 7: Xuất hiện một màn hình hiển thị tùy chọn các Database objects bạn muốn sử dụng trong model, bao gồm table, views, store procedures. Chọn các objects bạn muốn dùng,sau đó click  Finish.

Kết quả cuối cùng chúng ta sẽ có một  Entity Data Model StudentModel.edmx như ảnh bên dưới.

Chú ý, sau khi thực hiện các bước trên, Entity Framework sẽ tự động sinh ra một file StudentModel.Context.cs. Mở file đó ra bạn sẽ thấy có một class QLSVEntities kế thừa từ interface DbContext. Từ đây Bạn có thể truy vấn dữ liệu của database QLSV bằng cách tạo instance của class này.

3. Tự tạo một DbContext của riêng mình.
Đến đây chung ta có thể dùng class QLSVEntities được tự động sinh ra ở trên để truy cập dữ liệu của db QLSV, hoặc để hiểu sâu hơn về DbContext chúng ta sẽ tự tạo ra một class kế thừa từ DbContext.  DbContext là một tập hợp gồm nhiều DbSet, mỗi DbSet là một tập hơp các Entity trong context.

public class SampleContext : DbContext {
   public SampleContext() : base("name=QLSVEntities") { }
   public DbSet<Student> Students { get; set; }
}

4. Truy vấn dữ liệu sử dụng DbContext

Có 3 kiểu query bạn có thể sử dụng như sau:

  • Thêm mới một Entity.
  • Cập nhật một Entity.
  • Xóa một Entity.

Thêm mới một Entity sử dụng method Add của DbSet.

private static void AddStudent() {

   using (var context = new SampleContext()) {

      var student = new Student {
         LastName = "Hà", 
         FirstName = "Linh"
      };

      context.Students.Add(student); 
      context.SaveChanges();
   }
}

Cập nhật entities, cập nhật lại LastName của bạn Linh như sau.

   private static void UpdateStudent() {
      using (var context = new SampleContext()) {
         var student = (from d in context.Students where d.FirstName == "Linh" select d).Single();
         student.LastName = "Nguyễn";
         context.SaveChanges();
      }
   }

Xóa một entity, sử dụng method Remove của Dbset.

private static void DeleteStudent() {

   using (var context = new SampleContext()) {
      var student= (from d in context.Students where d.FirstName == "Linh" select d).Single();
      context.Students.Remove(student);
      context.SaveChanges();
   }
}

Cảm ơn bạn đã đọc bà viết này, hẹn gặp lại bạn trong bài viết tiếp theo.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s