1. Trang chủ >
  2. Luận Văn - Báo Cáo >
  3. Kỹ thuật >

III. Kiến trúc của Entity Framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.81 MB, 76 trang )


A.



Application



Application (ứng dụng) là tầng chứa giao diện trang Web (HTML, CSS,

Javascript, hình ảnh, …) và các đoạn mã nguồn (C#, VB) để tương tác dữ liệu với các

tầng khác trong mơ hình thơng qua Object Services.

B.



Object Services

Object Services (tạm dịch là các dịch vụ đối tượng) là tầng chứa q

trình tương tác giữa ứng dụng và database, hay nói cách khác nó là nơi chủ yếu

để truy cập dữ liệu từ database và trả ngược kết quả về giao diện. Object

Services cung cấp các tiện ích để truy vết các thay đổi và quản lý nhận dạng,

đồng thời là các quan hệ và thay đổi ở database.

Đây là các class tự động sinh ra tương ứng với mơ hình dữ liệu. Các

class này bao gồm:











Ta

EF:



ObjectContext đại diện cho một database. ObjectContext có chức

năng quản lý các kết nối, định nghĩa mơ hình dữ liệu với metadata và thao

tác với database. Lớp này cũng có thể thêm vào các phương thức đại

diện cho các stored procedure trong database.

ObjectSet là một một tập hợp các entity. Mỗi đối tượng

này tương ứng với một table. Có thể lấy được các đối tượng này thông

qua các property tương ứng của ObjectContext.

EntityObject, ComplexObject là các lớp tương ứng cho một dòng

dữ liệu của table trong database. Khác biệt chính giữa hai loại này là

ComplexObject không chứa primary key.

EntityCollection và EntityReference: là các đối

tượng thể hiện mối quan hệ (relationship) giữa hai entity class. Mỗi đối

tượng này có thể được truy xuất thơng qua các property của entity class.

có bảng ánh xạ tương đương sau giữa các đối tượng trong database và



Database Object



Entity Framework Object



Database



ObjectContext



Table, View



EntityObject, ComplexObject



Column



Property



Relationship



EntityCollection,

EntityReference



Ví dụ sau cho thấy cách tạo một đối tượng ObjectContext từ mơ hình dữ

liệu ProductDBEntities (tên của connection string được lưu trong app.config),

10



sau đó sử dụng LINQ to Entities để lấy ra tất cả các sản phẩm (trong bảng

Productvà in ra màn:

1



ObjectContext context = new ObjectContext ("name=ProductDBEntities");



2



ObjectSet products = context.CreateObjectSet();



3



var query = from p in products



4



where p.productPrice > 18000



5



select p;



6

7



foreach (var item in query)



8



{



9



Console.WriteLine("{0,-4}{1}", item.id, item.productName);



10



}



1 Milk tea

2 Latte

3 Capuchino

C.

Entity Data Model

Entity Data Model (EDM) là mơ hình dữ liệu được mô tả thông qua các ngôn ngữ

theo chuẩn XML. EDM được chia làm 3 lớp là: Conceptual, Mapping và Logical. Mỗi lớp

này được định nghĩa bởi ngôn ngữ riêng theo định dạng XML.( EDM khác với

EntityClient Data Provider ở chỗ EDM sử dụng LINQ là ngôn ngữ truy vấn tương tác

với database.)

Một ứng dụng Entity Framework (EF) có thể sử dụng 1 trong 3 cách tiếp cận:

Database First, Model First và Code First.

❖ Database First:



11



Đây là cách thông thường và được hỗ trợ từ phiên bản EF 1 trong Visual Studio

2008.EF sẽ tự động tạo ra data model và các class (object layer) cho bạn từ database

có sẵn thông qua công cụ Entity Data Model Wizard. Bạn có thể thay đổi data model và

cập nhật lại vào database. Đây là cách tiếp cận phổ biến vì cách thực hiện đơn giản,

nhanh chóng

❖ Model First:

Hướng tiếp cận này được bổ sung từ phiên bản EF 4 trong Visual 2010. Bạn có

thể tạo một data model rỗng bằng cơng cụ Entity Data Model Designer, khi đó object

layer cũng tự động được sinh ra. Sau khi đã hoàn thành việc thiết kế, bạn có thể sử

dụng chức năng Generate Database from Model để tạo ra các mã DDL (data definition

language) dựa trên mã SSDL (Store Schema Definition Language). Các mã DDL này sẽ

được thực thi và lưu thành tập tin .sql.

❖ Code First:

Với phiên bản EF 4 bạn cần phải cài thêm thư viện EF Feature CTP

(Community Technology Preview) để sử dụng. Tuy nhiên tính năng này đã được tích

hợp vào trong phiên bản EF 4.1 và với phiên bản VS 2010 hiện tại thì bạn cần phải

download để cài đặt thủ công. Hướng tiếp cận này bỏ qua phần Model (.edmx), bạn có

thể thiết kế các class tương ứng với các table của database mà bạn cần làm việc hoặc

muốn tạo ra. Với hướng tiếp cận này, bạn sẽ sử dụng class DbContext thay vì

ObjectContext để thao tác với database. Việc sử dụng Code First đòi hỏi bạn phải thực

hiện các công việc một cách thủ công nhưng bù lại nó linh hoạt và được sử dụng rất

phổ biến.



L2E (LINQ to Entities): là 1 ngôn ngữ truy vấn được dùng để viết các truy vấn

trái với mơ hình đối tượng. L2E trả về các thực thể, được định nghĩa bởi mơ hình khái

niệm. Chúng ta có thể dùng LINQ trong ngôn ngữ này.



12



Tham khảo thêm: CSDL, SSDL, and MSL Specifications

Các nội dung của ba tập tin .csdl, .msl và .ssdl được lưu trữ trong cùng tập

tin .edmx trong Visual Studio. Tập tin này có thể được tạo ra tự động từ

database và công cụ Entity Framework Model Wizard của Visual Studio. Trong

quá trình biên dịch, các tập tin .csdl, .msl và .ssdl sẽ được tạo ra dựa vào tập

tin .edmx này.

Note: Khi mở tập tin .edmx này, VS tự động hiển thị giao diện trực quan của nó

bằng cơng cụ mặc định là ADO.NET Entity Data Model Designer. Để xem nội

dung của tập tin này, bạn nhấn chuột phải, nhấn Open with… và chọn mục XML

Editor hoặc một trình xem dưới dạng văn bản bất kì.

D.



EntityClient Data Provider

Đây là tầng cung cấp các kết nối, diễn dịch các truy vấn thực thể thành

truy vấn nguồn dữ liệu (chuyển L2E – LINQ to Entity hay các truy vấn thực thể

SQL thành truy vấn SQL), trả về data reader để EF dùng chuyển dữ liệu thực thể

thành các đối tượng. Phần này kết nối ADO.NET Data Providers để gửi hoặc lấy

dữ liệu từ database. Tầng này hoàn toàn khác với EDM (Entity Data Model) khi

thực thi các truy vấn tương tự như cách thực hiện ở ADO.NET Provider.

EntityClient Data Provider sử dụng ESQL (Entity SQL), một ngôn ngữ truy vấn

độc lập dạng văn bản, tương tự như SQL.

EntityClient là một data provider mới của ADO.NET dùng để truy xuất đến

database. Được xây dựng bên trên các ADO.NET data provider cơ bản,

EntityClient không truy xuất trực tiếp dữ liệu mà thông qua các data provider

khác dựa vào các thông tin dữ liệu từ Entity Data Model.

EntityClient cũng bao gồm các lớp giống như các ADO.NET data provider

khác và tên lớp được đặt với tiền tố Entity. Ví dụ bạn có thể tạo kết nối

bằng EntityConnection, tạo các câu truy vấn bằng EntityCommand và đọc kết

quả bằng EntityDataReader.

13



Một điểm khác biệt với các data provider khác là EntityClient sử dụng Entity SQL

để truy vấn dữ liệu. Các lệnh Entity SQL sẽ được chuyển thành một cấu trúc

lệnh dạng cây (command tree) và chuyển xuống cho các data provider khác.

Ví dụ sau sử dụng EntityClient để tạo kết nối, tạo đối tượng

EntityCommand và sử dụng tham số để lấy các sản phẩm có ID là 1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17



int id = 1;

using (EntityConnection con = new EntityConnection("Name=ProductDBEntities"))

{

con.Open();

EntityCommand cmd = con.CreateCommand();

cmd.CommandText = "SELECT VALUE p FROM ProductDBEntities.Products AS p WHERE

p.id = @catId";

cmd.Parameters.AddWithValue("catId", id);

EntityDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);

while (reader.Read())

{

var catId = reader["id"];

var name = reader["ProductName"];

Console.WriteLine("{0,-3}{1}", catId, name);

}

reader.Close();

}



E.



ADO.NET Data Providers



Đây là tầng thấp nhấp để dịch các truy vấn L2E (LINQ to Entity) thông qua

cây lệnh thành các câu lệnh SQL và thực thi các câu lệnh trong hệ thống DBMS

(database management system – hệ quản lý dữ liệu) nào đó. Tầng này kết với

database sử dụng ADO.NET.



IV. Vị trí của Entity Framework trong mơ hình lập trình và phát

triển Web

Chắc hẳn, bạn đã biết về mơ hình Web 3 tầng (n tầng) khi đọc

sách, giáo trình, bài giảng về nội dung lập trình Web. Tuy nhiên, vấn đề

bạn cần phải hiểu rõ là: việc định rõ số lượng các tầng và các mối liên hệ

giữa các tầng trong mơ hình phát triển Web cũng rất đa dạng, tùy theo

cách hiểu các lập trình viên và dự án Web. Do đó, việc hiểu Entity

Framework nằm ở đâu trong mơ hình Web 3 tầng cũng khơng hồn tồn

14



dễ dàng. Trong phần này, tơi có tham khảo từ Stephen M. Redd nhằm giúp

các bạn hiểu rõ bản chất vấn đề hơn.

Đầu tiên, chúng ta có vị trí của EF trong mơ hình dự án Web ASP.NET

MVC.



Trong mơ hình trên, chúng ta thấy vị trí của EF nằm trọn trong tầng

Data Access Layer, tức là EF đóng vai trò là nơi trung gian để tương tác

dữ liệu từ database với các tầng cao hơn, chẳng hạn như Business Layer.

Hay nói cách khác, EF đóng vai trò như là phiên bản mới của ADO.NET.

Tuy nhiên vị trí của EF trong mơ hình này chỉ có trên lý thuyết.



15



Xem Thêm
Tải bản đầy đủ (.docx) (76 trang)

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×