Giới thiệu Entity Framework Code First

ADO.NET Entity Framework (EF) được Microsoft đưa ra từ phiên bản .NET 3.5 tích hợp với Visual Studio 2008. Trọng tâm của EF là Entity Data Model, một mô hình mẫu cho application domain của bạn ánh xạ ngược trở lại vào đồ hình (schema) của CSDL của bạn. Mô hình mẫu này mô tả các lớp chính (core class) trong ứng dụng của bạn. EF sử dụng mô hình mẫu này trong khi truy vấn từ CSDL, tạo các đối tượng từ dữ liệu và sau đó đưa các thay đổi ngược trở lại vào CSDL.

Việc mô hình hóa (modeling) với Entity Framework trước khi có Code First

Phiên bản đầu tiên của EF cho phép lập trình viên tạo mô hình mẫu bằng cách reverse engineering một CSDL đang có vào một tập tin XML. Tập tin XML này sử dụng phần mở rộng EDMX và bạn có thể sử dụng designer để xem và tinh chỉnh mô hình sao cho thích hợp nhất với domain của bạn. Visual Studio 2010 và .NET 4 mang đến phiên bản thứ 2 của EF, được đặt tên là Entity Framewoork 4 (EF4), để phù hợp với phiên bản .NET. Về mặt mô hình hóa, một tính năng mới gọi là Model First được đưa vào. Tại đây, bạn có thể thiết kế mô hình mẫu của bạn trong visual designer và sau đó tạo CSDL dựa trên mô hình này.

Model First cho phép lập trình viên làm việc trên các project mới mà không phải phụ thuộc vào dữ liệu để tận dụng khả năng của EF. Lập trình viên có thể bắt đầu với việc tập trung vào application domain bằng việc thiết kế mô hình mẫu và để CSDL tự động tạo theo như quy trình.

Dù cho việc thiết kế EDMX theo hướng database-first hay model-first, bước kế tiếp để tạo domain là để cho việc tạo code tự động tạo các lớp dựa trên các thực thể và các mối liên hệ của chúng mà nó tìm thấy trong model. Từ đây, lập trình viên có các strongly typed class đại diện cho các domain object và có thể tiếp tục việc phát triển ứng dụng xoay quanh các class này.

Một thay đổi lớn khác trong phiên bản EF4 đó là trong .NET 3.5, cách duy nhất EF có thể quản lý các đối tượng trong vùng nhớ (in-memory object) là yêu cầu các lớp phải kế thừa từ EntityObject của EF. EntityObject theo dõi các thay đổi và có khả năng đẩy ngược chúng lại CSDL. Theo tính năng này, .NET 4 đã giới thiệu POCO (Plain Old CLR Object) hỗ trợ EF theo dõi các thay đổi cho các lớp đơn giản hơn mà không cần EntityObject phải được thực thi.

Hello Code First

Được xây dựng dựa trên các thành phần được giới thiệu trong EF4, Code First cho phép lập trình viên định nghĩa domain model với code thay vì phải sử dụng một tập tin EDMX. Mặc dù Model First và Database First sử dụng code generation để cung cấp các class cho bạn làm việc, nhiều lập trình viên không muốn làm việc với designer hoặc các class được tạo từ chúng.

Trong Code First, bạn bắt đầu bằng việc định nghĩa domain model của bạn bằng việc sử dụng các POCO class không phụ thuộc vào EF. Code First có thể bao hàm nhiều thông tin về model từ các class của bạn. Bạn có thể cung cấp cấu hình bổ sung để mô tả model hoặc override những gì mà Code First cung cấp. Phần cấu hình này cũng được thực hiện trong code chứ không phải trong tập tin XML hay designer.

EF4 cũng hỗ trợ các POCO class khi làm việc với designer. EF cung cấp một POCO template cho phép tạo ra các POCO class. Những class này sẽ được cập nhật tự động khi bạn thay đổi trên designer. Bạn cũng có thể sử dụng các POCO class của mình, nhưng một khi bạn đã chọn cách này thì bạn phải chấp nhận việc đồng bộ hóa giữa các class của bạn và tập tin EDMX. Điều này có nghĩa là bất kì việc thay đổi nào phải được thực hiện ở 2 nơi: một là trên designer, một ở trong các class của bạn. Một trong những thuận lợi lớn của Code First đó là các class của bạn trở thành model, điều này có nghĩa rằng bất kì thay đổi nào cho model chỉ cần được thực hiện ở một nơi duy nhất – POCO class của bạn.

Code First, Model First và Database First cũng chỉ là các cách để xây dựng một Entity Data Model để có thể được sử dụng với EF để thực hiện việc truy cập dữ liệu.

ef_code_first_1

Microsoft đưa ra các tùy chọn Database First, Model First và Code First như là các workflow là vì thực sự mỗi tùy chọn đều bao gồm một tập các bước dù cho bạn tự thực hiện hay do tự động.

8 thoughts on “Giới thiệu Entity Framework Code First

  1. Pingback: Code First Migration trong Entity Framework | Huy Tran
  2. Blog này mình đã không còn post bài lên lâu rồi và chuyển sang trang khác và có đề cập địa chỉ trong blog này, trong đó mình có viết ví dụ cụ thể về các phần trong code first. Về code first không đơn thuần chỉ viết trong 1 bài là hết, do đó tiêu đề của mình chỉ ghi là “Giới thiệu Entity Framework Code First”. Cảm ơn bạn đã ghé qua trang blog này của mình.

  3. Pingback: WPF: Sử dụng Entity framework Code first với CSDL SQL Server có sẵn | Blog của Lê Văn Luật
  4. Pingback: WPF: Sử dụng Entity framework Code first với CSDL SQL Server có sẵn | vuongquyen
  5. Pingback: Code First Migration trong Entity Framework | Huy Tran's space
  6. Hiện tại mình đang làm một đề tài nghiên cứu về EF, khi tìm hiểu về tài liệu thì hầu hết là tài liệu tiếng anh, một số có thể hiểu được nhưng một số chỗ lại không hiểu nghĩa, không biết bạn còn chia sẽ về EF ở trang nào thì share link giúp mình nhé. Cảm ơn bạn nhiều

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