TRƯỜNG ĐẠI HỌC SPKT-TPHCM KHOA CNTT Bài báo cáo môn: Chuyên đề 2

1

LOGO

Entity Framework 4.0

GVHD: Nguyễn Minh Đạo Các thành viên nhóm : Hà Tuấn Quốc Nguyễn Thành Sinh Nguyễn Kim Sơn Đặng Thị Kim Thúy Trần Ngọc Trí

07110097 07110101 07110104 07110129 07110143
2

Nội dung

3

Nội dung 4 .

I. relationship.0 1. dữ liệu… được tổ chức như thế nào? 5 . store proceduce. Những vấn đề để phát sinh Entity Framework Giả sử khi có 1 sự thay đổi nào về table. column.stored procedure.… trong CSDL việc coding của các dev sẽ trở nên khó khăn  Vấn đề ở đây là các devs chỉ cần quan tâm đến việc phát triển ứng dụng và không cần quan tâm đến dữ liệu. Giới thiệu Entity Framework 4.

Những vấn đề để phát sinh Entity Framework (tt)  Cái mà EF cung cấp ở đây là một mô hình mà dữ liệu và ứng dụng sẽ di chuyển lẫn nhau. tương tác qua lại lẫn nhau. 6 .  EF là một mô hình khái niệm. Giới thiệu Entity Framework 4. loại bỏ khoảng cách giữa ứng dụng và dữ liệu mà các dev phải làm khi làm việc với đối tượng DataReader và các công nghệ truy xuất dữ liệu khác. cho phép làm việc giữa cơ sở dữ liệu và ứng dụng.0 (tt) 1.I.

0 (tt) 2.I. Các mô hình trước đây     Mô hình ERM (Entity Relationship Model): Mô hình UML (Unified Modeling Language Mô hình ORM (Object-Relational Mapping): Mô hình DFD (Data Flow Diagram): 7 . Giới thiệu Entity Framework 4.

 Ví dụ: mô hình ERM chỉ thể hiện tốt mô hình dữ liệu ở mức logic.I.0 (tt) 2. mô hình UML lại nổi trội hơn trong việc mô tả các đối tượng… 8 . Giới thiệu Entity Framework 4. Ngược lại. nhưng mô hình UML thì không thể. Các mô hình trước đây (tt)  Mỗi mô hình có 1 chức năng riêng và chúng bị giới hạn trong 1 phạm vi nhất định nào đó.

0 1.0 ADO. Lý do chọn Entity Framework 4. Giới thiệu Entity Framework 4.NET Entity Framework là một tập hợp các công nghệ trong ADO. các developers có thể sử dụng và khai thác sức mạnh của LINQ trong việc khai thác dữ liệu 9 .Net . loại bỏ hầu hết các code cho việc truy xuất dữ liệu mà các developers phải viết Sử dụng Entity Framework.I. nó được xem như là một Object/Relational Mapping (ORM) framework cho phép các developers làm việc với dữ liệu quan hệ như là các objects.

… EF 4. DB2)  Cung cấp một mapping engine mạnh mẽ 10 . Oracle.0 (tt) ADO. lazy loading.0 có thể:  Làm việc với nhiều cơ sở dữ liệu khác nhau (Microsoft SQL Server. Giới thiệu Entity Framework 4. identity resolution.I. query translation.NET Entity Framework còn cung cấp rất nhiều các tính năng khác như: change tracking.

0 (tt)  Kết hợp với Visual Studio 2010 cung cấp cho người dùng một công cụ mạnh mẽ.NET khác như ASP. Windows Communication Foundation (WCF).NET Data Service). WCF Data Services (ADO. Giới thiệu Entity Framework 4. Windows Presentation Foundation. … 11 .I. cho phép tự động xây dựng model từ database có sẵn hoặc triển khai database mới hoàn toàn từ model  Kết hợp với tất cả các ứng dụng .NET.

Giới thiệu Entity Framework 4.I.0 (tt)  12 .

Giới thiệu Entity Framework 4.I.0 (tt) Việc sử dụng Entity Framework để xây dựng các ứng dụng mang tính data-oriented mang lại các lợi ích sau  Rút ngắn được thời gian phát triển ứng dụng  Các developer làm việc với mô hình ứng dụng hướng đối tượng đúng nghĩa  Các ứng dụng sẽ thoát khỏi việc phụ thuộc quá nhiều vào mô hình lưu trữ  Việc thay đổi mapping giữa mô hình đối tượng và cấu trúc lưu trữ có thể được thực hiện dễ dàng  Hỗ trợ việc sử dụng LINQ 13 .

Giới thiệu Entity Framework 4.0 (tt) 2.I. Các tính năng trong EF 4.0  Hỗ trợ Plain Old CLR Objects (POCO)  Hỗ trợ Model-First  Related Object–Deferred Loading (Hỗ trợ chức năng Deferred Loading của các đối tượng liên quan)  Hỗ trợ các chức năng trong LINQ to Entities  Hỗ trợ Plurality Naming  Customized Object Layer Code Generation  Model Browser Improvements 14 .

Nội dung 15 .

The Entity Data Model (EDM)  EDM là cầu nối giữa ứng dụng và dữ liệu  Nó là một thành phần cho phép bạn làm việc với mô hình dữ liệu chứ không phải là trực tiếp với cơ sở dữ liệu 16 .II.

EDMX được tạo ra trong 2 phương pháp tạo EDM là Database-first và Model first. mappings thành class từ model đã định nghĩa. Tạo EDM .II. The Entity Data Model (tt) 1.Có 3 cách thông dụng:  Data-first: Bắt đầu với CSDL  Model-first: Cho phép bạn bắt đầu với một model rỗng. còn Code-only thì không cần tạo file *.  Code-only: Cho phép bạn sử dụng EF sử dụng Plain Old CLR Objects(POCO) mà không cần file EDMX  Chú ý: File *. định nghĩa model và tạo ra database.EDMX 17 .

ví dụ nếu bạn mapped bảng Person thì Entity sẽ đặt Name và Entity Name properties cùng tên là Person.  Trong các phiên bản trước của EF.  Quy ước đặt tên như vậy có thể gây ra sự nhầm lẫn khi viết code trong Model. Making Generated Object Names Plural or Singular  Đây là một trong những cải tiến đáng chú ý trong EF 4. vì name của objects không hoàn toàn có ý nghĩa. The Entity Data Model (tt) 2. Entity sẽ đặt Name và Entity Name properties cùng một kiểu.0 mà chúng ta cần quan tâm.II. 18 .

The Entity Data Model (tt)  Quy trình đặt tên tuân theo nguyên tắc của số ít và số nhiều trong tiếng Anh.II.  Đặt tất cả các EntityType names là singular (số ít)  Đặt tất cả các Entity Set names là plural (số nhiều) 19 .

Table-per-hierachy: sử dụng một bảng để lưu trữ dữ liệu cho tất cả phân cấp thừa kế. The Entity Data Model (tt) 3. Managing Table Inheritance (Quản lý kế thừa giữa các bảng)  Có 2 options cho kế thừa giữa các bảng: . mỗi entity mapped với một bảng dữ liệu.Table-per-type: Sử dụng riêng bảng để lưu trữ dữ liệu cho mỗi loại trong phân cấp thừa kế.II.  Từ khi EF engine sử dụng table-per-type mapping stratery. 20 . đây là điểm chính để tạo ra database schema. .

Managing Table Inheritance (tt) Entity Types and Tables 21 .II. The Entity Data Model (tt) 3.

Nội dung 22 .

III. The Entity Data Model Inside and Out
1. Designer window và EDM

23

III. The Entity Data Model Inside and Out (tt)
a. Designer window  Designer window cung cấp một cái nhìn tổng thể về EDM và các thành phần của model.  Thông qua EDM, bạn có thể  Tạo và chỉnh sửa các entities  Tạo và chỉnh sửa liên kết giữa các entities  Xem và chỉnh sửa các ánh xạ (mappings)  Chỉnh sửa các mối quan hệ kế thừa
24

III. The Entity Data Model Inside and Out (tt)
 Các thành phần:
 Designer surface: Bề mặt trực quan dùng để tạo, chỉnh sửa mô hình khái niệm  Mapping Details window: Nơi những ánh xạ được tạo ra hoặc chỉnh sửa  Toolbox: Chứa các điều khiển để tạo ra các thực thể, mối liên kết và mối quan hệ kế thừa.  Model Browser window: Cung cấp cái nhìn về mô hình khái niệm và lưu trữ.

25

Model Browser window 26 . The Entity Data Model Inside and Out (tt) b.III.

Model browser (tt) The Model Browser window cung cấp một cấu trúc cây của Model được định nghĩa trong EDM (specifically.  Import các hàm từ stored procedure bằng cách kích chuột phải vào stored procedure và lựa chọn Add Function Import. edmx.III. bao gồm cả stored procedures.  Xóa các Object từ Storage Model. Trong Model Browser window bạn có thể:  Xác định ENTITY trên Designer Window bằng cách kích chuột phải Entity và chọn Show in Designer. 27 .  Cập nhật các model từ cơ sở dữ liệu. and views. The Entity Data Model Inside and Out (tt) b.). tables.

Mapping Details window hiển thị các mapping giữa các Entity properties và table colum trong storage model. The Entity Data Model Inside and Out (tt) c.III. Mapping Details Window  Mapping Details window cung cấp một giao diện cho phép bạn xem và chỉnh sửa các physical mapping giữa Storage model và conceptual model Khi một Entity được chọn. 28 .

29 .  Entity set: Là một container cho các Entity có kiểu đơn. Entity  Bao gồm 2 loại là:  Entity type: đại diện cho một loại dữ liệu. Order hoặc Product. chẳng hạn như Employee.  Các Entity Type được nhóm thành một Entity Set.III. The Entity Data Model Inside and Out (tt) 2.

III. Quy định về các tính chất cũng như độ dài của các biến. Scalar Properties: là một thuộc tính của Entity. The Entity Data Model Inside and Out (tt) a. 30 .

The Entity Data Model Inside and Out (tt) b. 31 .III. Complex types:  Cung cấp cơ chế xử lý cho việc lưu trữ hoặc đóng gói các thuộc tính quan hệ vào trong 1 hoặc nhiều entities.

III. 32 . The Entity Data Model Inside and Out (tt) c. Navigation property  Các thuộc tính Navigation giúp xác định hướng của các Asscociation.

The Entity Data Model Inside and Out (tt) 3. 33 . Mapping details Cửa sổ Mapping Detail cho phép bạn xem và chỉnh sửa mapping giữa Conceptual model và storage model trong EDM.III.

edmx và chọn Open With… 34 . nhưng hầu hết công việc được thực hiện nằm lớp bên dưới mà ta không nhìn thấy được (Hood)  Kích chuột phải vào tập tin . Lifting the EDM Hood  Nhìn vào mô hình thì chỉ là một phần nhỏ của Model có thể xem được. The Entity Data Model Inside and Out (tt) 4.III.

III. The Entity Data Model Inside and Out (tt) 35 .

Phần Runtime bao gồm 3 phần: • SSDL: Storage Schema Definition Language • CSDL: Conceptual Schema Definition Language • CS (MSL): Mapping information 36 . The Entity Data Model Inside and Out (tt) 5.III. Runtime và Designer. The EDM Model Parts  Hình trên cho ta thấy hai phần khác nhau.

Nội dung 37 .

LastName. 38 .IV. Cú pháp Query-expression var q= from Where Order by Group by Select  Ví dụ:  var people = from p in context.FirstName where p.LastName == "Jones" group p by p.LastName == “King" || p. Cú pháp truy vấn a.People orderby p. Truy vấn trong EDM 1.

Truy vấn trong EDM (tt) b. bên phải là biểu thức hoặc khối các câu lệnh 39 .LastName == "King").Where(c => c. Nghĩa là: bên trái là tham số đầu vào.IV.OrderBy(d => d.FirstName).People. được đọc là “goes to”. Method-Based Syntax  Cú pháp Mothod-based được biết như là biểu thức Lambda  Ví dụ var people = context.  Biểu thức Lambda sử dụng toán tử =>.

Các tùy chọn truy vấn a.IV. LinQ to Entities  Là cú pháp đơn giản vì nó gần gũi với người đã biết cú phát Linq  Truy vấn LINQ bắt đầu bằng mệnh đề FROM và kết thúc bằng mệnh đề SELECT 40 . Truy vấn trong EDM (tt) 2.

Truy vấn trong EDM (tt) Ví dụ: from p in context. orderby.FirstName.People where p.LastName == "King" orderby p. p.FirstName select new { p. Ngoài ra có 4 toán tử chuẩn cho câu truy vấn LINQ: from. where. 41 .LastName }.IV.  p đơn giản chỉ là tên biến truy vấn dùng để tham chiếu đến entity mà ta đang làm việc. select.

microsoft.100). count (*) Tham khảo sự khác biệt trên trang: http://msdn. Entity SQL  Gần giống T-SQL.IV. ví dụ: Select *. được dùng để lưu trữ dữ liệu 1 cách độc lập Không hỗ trợ cú pháp *.aspx 42 .com/enus/library/bb738573(VS. Truy vấn trong EDM (tt) b.

Data. EntityClient Không có ngôn ngữ riêng nhưng sử dụng ngôn ngữ SQL để thực thi dòng lệnh trong Entity Model  Sử dụng thư viện: using System. Truy vấn trong EDM (tt) 3.EntityClient 43 .IV.

không phải kết nối trực tiếp với Database  Ví dụ: using (EntityConnection conn = new EntityConnection("name = AdventureWorks2008Entities")) 44 . EntityConnection  Được cung cấp kết nối với EDM. Truy vấn trong EDM (tt) a.IV.

và phương thức ExecuteReader 45 . Truy vấn trong EDM (tt) b.IV. EntityCommand  Đại diện cho Command sẽ được thực thi trong EDM Có sự kiện giống với CommandText.

Thực thi Defferd và Immediate a.LastName. Truy vấn trong EDM (tt) 4. Phương pháp thực thi Deferred  var query = from p in context.IV.MiddleName } .people select new { p. biến query chỉ lưu trữ câu truy vấn. p.Những câu truy vấn như trên chưa được thực thi ngay.Câu truy vấn được thực thi khi thực hiện câu lệnh foreach 46 . .FirstName. p.

 ToDictionary: tạo 1 Dictionary from an IEnumerable(T).IV. 47 . Truy vấn trong EDM (tt) b. Thực thi ngay lập tức (immediately) Bất cứ câu truy vấn nào trả về giá trị singleton đều là thực thi trực tiếp Để thực thi câu truy vấn ngay lập tức ta thêm vào phương thức:  ToList: tạo 1 List(T) từ IEnumerable(T).

48 .IV. Truy vấn trong EDM (tt)  ToLookup: tạo 1 generic Lookup from an IEnumerable(T).  ToArray: tạo 1 mảng from an IEnumerable(T).  Average: tính toán giá trị trung bìnhComputes the average of a sequence of numeric values.  First: lấy ra đối tượng đầu tiên (=select (1) top)  Count: đếm số lượng đối tượng được trả về.  Max: trả về giá trị lớn nhất.

LastName.ToList(). 49 . p.FirstName.IV.MiddleName. Truy vấn trong EDM (tt)  Ví dụ : var query = (from p in context. p.BusinessEntityID}). p.People select new { p.

Nội dung 50 .

Objects và System.V. Object Contex  Là một phần thuộc không gian tên System.Data.Data. Làm việc với các Entities 1.DataClasses  Đóng gói một đối tượng ObjectStateManager để quản lý các đối tượng trong CUD Ngoài ra mỗi ObjectContex còn có đối tượng ObjectStateEntry dành riêng cho từng Entity 51 .Objects.

ObjectStateEntity sẽ lưu lại Entity đó. Làm việc với các Entities (tt) 2.V. 52 . ObjectStateEntry  Duy trì trạng thái và thông tin chính cho các Entity  Quản lý các EntityState và các giá trị EntityKey  Các ObjectStateEntry trong cùng một ObjectStateManager thì không được chứa cùng một khóa giống nhau Khi một Entity được tạo.

 Modified: Đối tượng đã thay đổi nhưng chưa gọi phương thức SaveChanges 53 .V. thuộc tính EntityState sẽ có các giá trị sau:  Detached: Đối tượng đã được tạo nhưng chưa được các Object Service quản lý  Unchanged: Đối tượng chưa được chỉnh sửa. tính từ lúc nó được nạp hoặc từ lần cuối phương thức SaveChanges được gọi  Added: Đối tượng vừa mới được nạp vào ngữ cảnh và chưa gọi phương thức SaveChanges lần nào  Deleted: Đối tượng đã bị xóa ra khỏi ngữ cảnh. Làm việc với các Entities (tt)  Và khi các Entity bị thay đổi.

bao gồm:  AppendOnly: Những đối tượng hiện có trong ObjectContext đều không được nạp từ dữ liệu nguồn  OverwriteChanges: Toàn bộ thuộc tính của các đối tượng trong ObjectContext sẽ bị ghi đè 54 . Tracking and Saving Changes  Duy nhất một thể hiện của một đối tượng được lưu trong bộ đệm và được Object Service quản lý  Chức năng này được cung cấp bởi tập hợp MergeOption.V. Làm việc với các Entities (tt) 3.

Chịu trách nhiệm\  Các Entity được lưu xuống dữ liệu nguồn bằng phương thức SaveChanges của ObjectContext 55 . Làm việc với các Entities (tt)  PreserveChanges: Các đối tượng luôn được nạp lên từ dữ liệu nguồn nhưng vẫn giữ lại các giá trị đã bị thay đổi trong ObjectContext  NoTracking: Các đối tượng không còn được theo dõi bởi ObjectStateManager và được duy trì trong trạng thái Detached.V.

phương thức SaveChanges có 2 bộ khởi dựng là:  SaveChanges(): lưu toàn bộ giá trị cập nhật xuống CSDLvà cài đặt lại các giá trị trong bộ theo dõi của ObjectContext  SaveChanges(SaveOptions): lưu các giá trị cập nhật xuống CSDL cùng với giá trị SaveOption tương ứng 56 .0 EF. bộ khởi dựng SaveChanges(Boolean) đã bị thay bằng SaveChanges(SaveOptions).NET 4. Làm việc với các Entities (tt)  Đối với ADO. Do đó.V.

Các thành viên của tập hợp trên gồm:  AcceptAllChangesAfterSave  DetectChangesBeforeSave  None Ví dụ: context. 57 .AcceptAllChangesAfterSave).SaveChanges(SaveOptions. Làm việc với các Entities (tt)  Bộ khởi dựng thứ 2 cho phép chúng ta chọn lựa hành vi của ObjectContext khi phương thức SaveOptions được gọi.V.

  5. Updating Entities Dùng cập nhật Entity Xem demo Adding Entities Relational Inserts Deleting Entites 58 .V. Làm việc với các Entities (tt) 4. 7. 6.

Nội dung 59 .

update. delete từ database Sau khi tạo store procedure. Stored Prodcedures và EDM 1. nó sẽ tạo ra 1 store procedure để quản lý  Bạn có thể tạo ra nhiều store procedure để quản lý việc insert. ta sẽ add vào model. Store procedure trong EDM Mặc định khi tạo EDM. Ví dụ minh họa 60 .VI.

VI. Stored Prodcedures và EDM (tt) 2. Model Browser  Cửa sổ trình bày các thủ tục trong Store procedure sau khi được tạo ra 61 .

Chức năng của EF  Khi thêm store procedure vào EDM.VI. Stored Prodcedures và EDM (tt) 3. SOAP Service Description Language (SSDL) đại diện cho store procedure như 1 chức năng  Store procedure được biểu diễn thông qua thẻ <function> Element này chứa một vài attribule định nghĩa như đặc điểm và hành vi của store procedure như schema 62 .

update và gửi chúng tới nơi lưu trữ dữ liệu để thực thi. Mapping function  Mặc định.VI. delete.  Behavior mặc định có thể được overwritten bởi mapping functions đến 1 entity cụ thể 63 . Stored Prodcedures và EDM (tt) 4. EF xây dựng các câu lệnh insert.

VI. click <Select Insert Function>. Trong cửa Mapping detail. 64 . Lựa chọn InsertPerson. Khi đó có 1 list drop-down sẵn. Stored Prodcedures và EDM (tt)  Cách tùy chỉnh Đầu tiên thực hiện map insert function.

Stored Prodcedures và EDM (tt) 65 .VI.

Stored Prodcedures và EDM (tt) Tiếp theo. Hình dưới chỉ ra kết quả mapping: 66 .VI. map update fuction chọn UpdatePerson store procedure từ drop-dow list.

Stored Prodcedures và EDM (tt) Cuối cùng.VI. map chức năng delete DeletePerson store procedure. Màn hình kết quả: 67 .

Stored Prodcedures và EDM (tt) 6. 68 .VI. Using functions in queries  Trong model browser. bạn R_click vào store procedure SelectPeron=> Add Function Import.

0 Entity Framework.VI.NET 4.  Dưới đây là thông tin bảng tùy chọn Add Function Import 69 . Stored Prodcedures và EDM (tt)  Chú ý rằng Add Function Import được đổi tên là Create Function Import trong ADO.

Nội dung 70 .

Những relationships hoặc associations thì được hiển thị bằng đường thẳng giữa các entities 71 . Relationships in General  Trong EDM designer.VII. Relationships và Associations 1. bạn sẽ thấy các relationships giữa các entities.

72 ..1. Relationships và Associations (tt)  Các loại:  One: hiển thị số 1.  Zero or One: Hiển thị ký tự: 0. cuối relationships có thể có một hoặc nhiều hơn một items.  Many: Hiển thị dấu *.VII. không ít hơn 1 và không nhiều hơn 1. cuối relationships có thể không có hoặc có một item. và cuối relationships chỉ có thể có một item.

73 . Relationships và Associations (tt) 2. 3.5  Trong EF 3. Không được đưa vào trong Entities. Chỉnh sửa các association và tham chiếu dễ dàng hơn. Relationships in EF 3. khi tạo các Entities trong EDM thì các thuộc tính khóa ngoại bị bỏ qua.VII.5.0  Có thêm tùy chọn để thêm vào các thuộc tính khóa ngoại trong Entities. Relationships in EF 4.

ở EF 4.VII. Relationships và Associations (tt) Sự khác biệt trong XML: khác với EF 3.5.0 thì phần conceptual schema definition language (CSDL) được chia làm 2 phần: Phần đầu chứa AssociationSet Phần hai chứa thành phần ReferentialConstraint 74 .

Q&A 75 .

Sign up to vote on this title
UsefulNot useful