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

Entity Framework – Entity Data Model là gì?

Chào các bạn, bài viết trước chúng ta đã hiểu cơ bản Entity Framework là gì? Ở bài viết này chúng ta sẽ tìm hiểu một thành phần quan trọng của Entity Framework đó là “Entity Data Model (EDM)“.

Entity Data Model là gì?
EDM là một tập các Business objects bao gồm 3 thành phần:

  • Conceptual Model.
  • Mapping Model.
  • Storage Model.

EDM là cầu nối giữa application của bạn và Relational Database. EDM giúp bạn thao tác (connect, Add, Update, Delete) với database qua các objects được Entity Framework sinh ra mà không cần  viết các câu lệnh SQL để thao tác trực tiếp với Relational Database. Nhờ có EDM mà các Business objects được sinh ra trong ứng dụng và  Relational Database hiểu được nhau.

Entity Data Model

ADO.NET Entity Framework sử dụng XML based Data Definition Language gọi là Schema Definition Language (SDL) để định nghĩa EDM Schema.

  • SDL bao gồm các kiểu dữ liệu nguyên thủy như String, Int32, Double, Decimal, and DateTime.
  • Với kiểu dữ liệu đơn giản, nó định nghĩa thành từng cặp name và value của kiểu dữ liệu nguyên thủy.
  • Với kiểu dữ liệu phức tạp, là tập hợp của các kiểu dữ liệu khác. Kiểu dữ liệu này được gọi là Entity Type.

The Entity Data Model dùng 3 thuộc tính để mô tả cấu trúc của một EDM.

  • Entity type
  • Association type
  • Property

Ví dụ: Dưới đây là 1 ví dụ về SDL

<?xml version=”1.0″ encoding=”UTF-8″?>
<Schema xmlns=”http://schemas.microsoft.com/ado/2008/09/edm&#8221; xmlns:cg=”http://schemas.microsoft.com/ado/2006/04/codegeneration&#8221; xmlns:store=”http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator&#8221; Namespace=”BooksModel” Alias=”Self”>
<EntityType Name=”Book”>
<Key>
<PropertyRef Name=”ISBN” />
</Key>
<Property Type=”String” Name=”ISBN” Nullable=”false” />
<Property Type=”String” Name=”Title” Nullable=”false” />
<Property Type=”Decimal” Name=”Revision” Nullable=”false” Precision=”29″ Scale=”29″ />
<NavigationProperty Name=”Publisher” Relationship=”BooksModel.PublishedBy” FromRole=”Book” ToRole=”Publisher” />
<NavigationProperty Name=”Authors” Relationship=”BooksModel.WrittenBy” FromRole=”Book” ToRole=”Author” />
</EntityType>
<EntityType Name=”Publisher”>
<Key>
<PropertyRef Name=”Id” />
</Key>
<Property Type=”Int32″ Name=”Id” Nullable=”false” />
<Property Type=”String” Name=”Name” Nullable=”false” />
<Property Type=”String” Name=”Address” Nullable=”false” />
<NavigationProperty Name=”Books” Relationship=”BooksModel.PublishedBy” FromRole=”Publisher” ToRole=”Book” />
</EntityType>
<EntityType Name=”Author”>
<Key>
<PropertyRef Name=”Name” />
<PropertyRef Name=”Address” />
</Key>
<Property Type=”String” Name=”Name” Nullable=”false” />
<Property Type=”String” Name=”Address” Nullable=”false” />
<NavigationProperty Name=”Books” Relationship=”BooksModel.WrittenBy” FromRole=”Author” ToRole=”Book” />
</EntityType>
<Association Name=”PublishedBy”>
<End Type=”BooksModel.Book” Role=”Book” Multiplicity=”*” />
<End Type=”BooksModel.Publisher” Role=”Publisher” Multiplicity=”1″ />
</Association>
<Association Name=”WrittenBy”>
<End Type=”BooksModel.Book” Role=”Book” Multiplicity=”*” />
<End Type=”BooksModel.Author” Role=”Author” Multiplicity=”*” />
</Association>
</Schema>

Entity Framework là gì?

Bài viết này danh cho các bạn bắt đầu học về Entity Framework, sau bài viết này các bạn sẽ hiểu Entity Framework là gì? Tại sao lại sử dụng Entity Framework?

1. Entity Framework là gì?
Entity Framework được ra mắt lần đầu tiên vào năm 2008, giúp cho việc truy vấn cơ sỡ dữ liệu quan hệ trở lên đơn giản, dễ học, giúp giảm bớt thời gian phát triển dự án xuống đáng kể.

Entity Framework là một Object Relational Mapper(ORM) một công cụ mapping giữa các objects trong ứng dụng với các tablescolumns của cơ sở dữ liệu quan hệ.

  • Entity Framework là một Open source ORM Framework.
  • Một ORM có thể tạo kết nối đến một Relational database, thực thi cậu lệnh và trả về kết quả là các objects trong ứng dụng.
  • Một ORM sẽ theo dõi sự thay đổi dữ liệu,trạng thái của các objects trả về ở trên, mỗi khi có sự thay đổi dữ liệu từ những objects này ORM sẽ gửi những thay đổi đó đến Relational database.

Hiểu một cách đơn giản thì ORM là công cụ tự động tạo ra các Objects trong ứng dựng từ tables,views, store procedures của một Relational Database nào đó.

2. Tại sao lại sử dụng Entity Framework?

  • Entity Framework sẽ tự động tạo ra các classes, commands tương ứng cho việc select, insert, update,delete dữ liệu từ cơ sở dữ liệu quan hệ.
  • Nếu muốn truy vấn dữ liệu, bạn có thể sử dụng Linq to Entities để thao tác với objects được sinh ra từ Entity Framework, điều này có nghĩa là bạn không phải viết code sql.
  • Dễ dàng update các classes,commands mỗi khi cơ sở dữ liệu có sự thay đổi, điều này giúp bạn tiết kiệm thời gian đáng kể.

Entity Framework tự động tạo ra các classes cho việc truy suất cơ sở dữ liệu nên lập trình viên sẽ giảm được thời gian viết code thao tác với database. Giúp bạn focus vào Business domain, không mất quá nhiều thời gian cho việc viết code thao tác với database nữa.

3. Các tình huống dùng Entity Framework?

Entity Framework có thể được dùng ở 1 trong 3 tình huống sau:

  • Database First: Bạn đã tạo sẵn một database, rồi sau đó sử dụng Entity Framework để tự động sinh ra các domain classes.
  • Code First: Bạn focus vào tạo domain classes, rồi sau đó dùng Entity Framework để tạo ra database.
  • Model First: Bạn tạo database schema trên visual designer, rồi sau đó dùng Entity Framework để tạo ra cả classes và database.

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