Khoanglang89
Bạn hãy đăng nhập hoặc đăng ký
Khoanglang89

NHẬN THIẾT KẾ WEBSITE/ SOFTWARE - LÀM ĐỒ ÁN TỐT NGHIỆP, ĐỒ ÁN CHUYÊN MÔN NGÀNH CÔNG NGHỆ THÔNG TIN


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

Admin

avatar

Admin
Admin
Loading
Tổng quan kiến trúc của Entity Framework

ADO.NET Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM). Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình.

Kiến trúc của Entity Framework được minh họa như sau:

Các nội dung dưới đây sẽ đi vào giải thích từng phần trong sơ đồ trên. Trong giới hạn của bài viết, tôi chỉ đi khái quát để bạn nắm được nội dung chính. Trong thực tế, bạn cũng không cần biết sâu hơn về kiến trúc bên dưới trừ những mục đích đặc biệt.

Object Services

Đâ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:
–      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.
–      EntityCollectionEntityReference: 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.
Ta có bảng ánh xạ tương đương sau giữa các đối tượng trong database và EF:
Database ObjectEntity Framework Object
DatabaseObjectContext
Table, ViewEntityObject, ComplexObject
ColumnProperty
RelationshipEntityCollection, EntityReference
Ví dụ sau cho thấy cách tạo một đối tượng ObjectContext từ mô hình dữ liệu NorthwindEntities (tên của connection string được lưu trong app.config), sau đó sử dụng LINQ to Entities để lấy ra các sản phẩm (trong bảng Products) có tên bắt đầu bằng “G” và in ra màn:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Code:
// …
Code:
ObjectContext context =
Code:
new

Code:
ObjectContext(
Code:
"name=NorthwindEntities"
Code:
);
 
Code:
ObjectSet<Product> products = context.CreateObjectSet<Product>();
 
Code:
var

Code:
query =
Code:
from

Code:
p
Code:
in

Code:
products
            
Code:
where

Code:
p.ProductName.StartsWith(
Code:
"g"
Code:
)
            
Code:
select

Code:
p;
 
Code:
foreach

Code:
(
Code:
var

Code:
item
Code:
in

Code:
query)
Code:
{
    
Code:
Console.WriteLine(
Code:
"{0,-4}{1}"
Code:
,item.ProductID, item.ProductName);
Code:
}
Code:
// …
Output:
6 Grandma's Boysenberry Spread
15 Genen Shouyu
22 Gustaf's Knäckebröd
24 Guaraná Fantástica
26 Gumbär Gummibärchen
31 Gorgonzola Telino
33 Geitost
37 Gravad lax
44 Gula Malacca
56 Gnocchi di nonna Alice
69 Gudbrandsdalsost

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:
–      Conceptual – Conceptual Schema Definition Language (CSDL): là ngôn ngữ định nghĩa các entity, relationship, hàm trong tập tin với phần mở rộng .csdl. Có thể tạo được các entity class (object layer).
–      Mapping – Mapping specification language (MSL): định nghĩa các ánh xạ giữa lớp conceptual và logical, nội dung này được lưu trong tập tin .msl.
–      Logical – Store Schema Definition Language (SSDL): định nghĩa mô hình lưu trữ của dữ liệu, lưu trữ trong tập tin .ssdl.

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ì.

EntityClient Data Provider

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.
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ó CategoryID là 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Code:
int

Code:
categoryID = 1;
Code:
using

Code:
(EntityConnection con =
Code:
new

Code:
EntityConnection(
Code:
"Name=NorthwindEntities"
Code:
))
Code:
{
    
Code:
con.Open();
    
Code:
EntityCommand cmd = con.CreateCommand();
    
Code:
cmd.CommandText =
Code:
"SELECT VALUE p FROM NorthwindEntities.Products AS p WHERE p.CategoryID = @catId"
Code:
;
    
Code:
cmd.Parameters.AddWithValue(
Code:
"catId"
Code:
, categoryID);
    
Code:
EntityDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
    
Code:
while

Code:
(reader.Read())
    
Code:
{
        
Code:
var

Code:
name = reader[
Code:
"ProductName"
Code:
];
        
Code:
var

Code:
catId=reader[
Code:
"CategoryID"
Code:
];
        
Code:
Console.WriteLine(
Code:
"{0,-3}{1}"
Code:
,catId,name);
    
Code:
}
    
Code:
reader.Close();
Code:
}
Code:
// ...
Output:
CategoryID ProductName
1 Chai
1 Chang
1 Guaraná Fantástica
1 Sasquatch Ale
1 Steeleye Stout
1 Côte de Blaye
1 Chartreuse verte
1 Ipoh Coffee
1 Laughing Lumberjack Lager
1 Outback Lager
1 Rhönbräu Klosterbier
1 Lakkalikööri
https://yinyangit.wordpress.com


_________________
Có nỗi buồn triền miên, làm trái tim hoá đá
Có những dòng lệ nhỏ, khiến đá hoá thành tim.

-------------------------------------------------------------------------------------------------------
Program Skills:  ASP.Net MVC 3/4; C#; VB.Net/ VB 6.0; Java Applet/Swing; JS/JavaScript; Bootstrap/ AngularJS; HTML/CSS; Turbo C/ Turbo C++; Pascal...
Xem mẫu Phần mêm quản lý ở đây     -           Xem mẫu Bán hàng trực tuyến ở đây
Nguyễn Ích Hoàn
new_life02081989@yahoo.com
nguyenichhoan1989@gmail.com
Xem lý lịch thành viên http://khoanglang89.forumvi.com

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Bài viết mới cùng chuyên mục

      Permissions in this forum:
      Bạn không có quyền trả lời bài viết