Tìm kiếm Blog này

Hiển thị các bài đăng có nhãn ADO.NET Entity Framework. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn ADO.NET Entity Framework. Hiển thị tất cả bài đăng

Thứ Hai, 17 tháng 1, 2011

Khái niệm về ADO.NET Entity Framework

The ADO.NET Entity Framework đơn giản hoá mã truy cập dữ liệu trong các ứng dụng bằng cách cho phép các nhà phát triển để tạo ra một mô hình tùy biến khái niệm cho các dữ liệu từ bất kỳ nguồn nào và dễ dàng đồ nó để yêu cầu kinh doanh.

The ADO.NET Entity Framework là cơ sở dữ liệu độc lập và xây dựng dựa trên một mô hình chuẩn cung cấp ADO.NET cho phép truy cập vào cơ sở dữ liệu của bên thứ ba thông qua việc sử dụng ADO.NET liệu cung cấp. Các nhà cung cấp của bên thứ ba đang có sẵn.


KHÁI NIỆM VỀ ADO.NET ENTITY FRAMEWORK

ADO.NET Entity Framework như giản đồ của các dữ liệu được lưu trữ trong cơ sở dữ liệu và trình bày giản đồ khái niệm ứng dụng của nó. Giản đồ này được ánh xạ từ cơ sỡ dữ liệu.
 

Những bất lợi của ADO.NET Entity Framework Nếu cơ sỡ dữ liệu thay đổi các quan hệ thì ADO.NET Entity sẽ không thay đổi theo, bạn phải update mới từ ADO.NET Entity đã có.
 

Mô hình này vượt qua mối quan hệ giữa các bản ghi là rất khác nhau từ các mô hình sử dụng trong các đối tượng ngôn ngữ lập trình theo định hướng, nơi mà các mối quan hệ của các tính năng của một đối tượng tiếp xúc như là thuộc tính của đối tượng và truy cập vào các bảng đi qua các mối quan hệ. Ngoài ra, việc sử dụng các truy vấn SQL diễn tả như ở đây, chỉ để xử lý cơ sở dữ liệu, giữ cho các ngôn ngữ lập trình luôn làm cho bất kỳ sự bảo đảm về hoạt động và biên dịch từ việc cung cấp thông tin về thời gian.

Các bản đồ của giản đồ vật lý định nghĩa như thế nào dữ liệu có cấu trúc và lưu trữ trên đĩa là công việc của hệ thống cơ sở dữ liệu và cơ chế khách hàng truy cập, dữ liệu được shielded như là cơ sở dữ liệu cho thấy nhiều dữ liệu trong cách xác định bởi giản đồ hợp lý của nó.

KIẾN TRÚC CỦA ADO.NET ENTITY FRAMEWORK


Nguồn cung cấp dữ liệu cụ thể (Data source specific providers): trong đó tóm tắt các giao diện ADO.NET để kết nối với cơ sở dữ liệu khi lập trình đối với các khái nệm schema.

Cung cấp bản đồ (Map provider):  một cơ sở dữ liệu cụ thể mà nhà cung cấp dịch cây lệnh Entity SQL vào nguồn gốc một truy vấn SQL trong cơ sở dữ liệu. Nó bao gồm Store cụ thể, là thành phần chịu trách nhiệm dịch lệnh vào một Store cụ thể .

EDM phân tích cú pháp, lập và xem bản đồ (EDM parser and view mapping): với đặc tả SDL của mô hình dữ liệu và làm thế nào nó lên bản đồ mô hình quan hệ tiềm ẩn và cho phép lập trình trên các mô hình. Từ giản đồ quan hệ, nó tạo ra xem các dữ liệu tương ứng với các mô hình. Nó tập hợp thông tin từ nhiều bảng để tổng hợp chúng thành một thực thể, và chia tách một cập nhật cho một thực thể cập nhật nhiều vào bảng nào.

Truy vấn và cập nhật (Query and update pipeline): các quá trình truy vấn, các bộ lọc và cập nhật, được yêu cầu để chuyển chúng thành cây lệnh kinh điển mà sau đó được chuyển đổi thành truy vấn cụ thể của các cấp bản đồ.

Dịch vụ siêu dữ liệu (Metadata services):  trong đó xử lý tất cả các siêu dữ liệu liên quan đến các thực thể, mối quan hệ và ánh xạ.

Giao dịch (Transactions): để tích hợp với khả năng giao dịch của các store nằm bên dưới. Nếu storenằm bên dưới không hỗ trợ giao dịch, nó cần phải được thực hiện tại lớp này.

Ý tưởng lớp API (Conceptual layer API): trong thời gian đó cho thấy nhiều mô hình cho các lập trình mã hóa chống lại các khái niệm giản đồ. Nó theo mô hình ADO.NET của việc sử dụng các đối tượng kết nối để tham khảo các nhà cung cấp bản đồ, các đối tượng sử dụng lệnh để gửi các truy vấn, và trả lại EntityResultSets hoặc EntitySets có kết quả.

Ngắt kết nối các thành phần (Disconnected components): trong đó tại địa phương datasets cache và bộ thực thể để sử dụng ADO.NET Entity Framework trong một môi trường đôi khi kết nối.
  • Nhúng vào cơ sở dữ liệu (Embedded database): ADO.NET Entity Framework bao gồm một cơ sở dữ liệu nhúng nhẹ cho client-side caching và truy vấn các dữ liệu quan hệ.
Thiết kế các công cụ (Design tools): như là đồ Designer cũng được bao gồm với ADO.NET Entity Framework mà đơn giản hoá việc làm trên bản đồ một giản đồ khái niệm để các giản đồ quan hệ trong đó nêu rõ tính chất của một loại thực thể tương ứng với những bảng trong cơ sở dữ liệu.

Lớp Lập trình (Programming layers,): trong đó cho thấy nhiều các EDM như lập trình xây dựng có thể được tiêu thụ bởi các ngôn ngữ lập trình.
  • Dịch vụ đối tượng (Object services) : tự động tạo ra các mã cho các lớp học CLR mà phơi bày các tài sản như một thực thể, do đó cho phép các thực thể như instantiation đối tượng .NET .
  • Dịch vụ Web (Web services) : trong đó vạch trần thực thể như các dịch vụ web.
Cao cấp dịch vụ (High level services): như báo cáo dịch vụ làm việc trên các thực thể hơn là các dữ liệu quan hệ. 

So sánh LinQ to SQL và ADO.NET Entity Framework

LINQ to SQL và Entity Framework có rất nhiều điểm chung, nhưng mỗi cái có những đặc tính riêng nhắm đến những trường hợp khác nhau trong Orcas (bản VS 2008).
LINQ to SQL có các đặc tính hướng đến việc phát triển nhanh ứng dụng với CSDL Microsoft SQL Server. LINQ to SQL cho phép bạn có một cái nhìn chặt chẽ về kiểu với cấu trúc của CSDL của bạn. LINQ to SQL hỗ trợ việc ánh xạ 1-1 trực tiếp cấu trúc dữ liệu của bạn vào các lớp; một bảng đơn có thể được ánh xạ vào một cấu trúc phân cấp (ví dụ một bảng có thể chứa person, customer và employee) và các khóa ngoài có thể ánh xạ thành các quan hệ strongly-typed. Bạn có thể thực hiện truy vấn trên các các bảng, các view hay thậm chí các kết quả dạng bảng trả về bởi một function thông qua các phương thức. Một trong những mục tiêu thiết kế chính của LINQ to SQL là nhằm làm cho nó có thể dùng được ngay đối với những trường hợp thông thường; vậy nên, ví dụ bạn truy cập một tập các order thông qua thuộc tính Orders của một customer, và các order của customer đó chưa được đọc vào, LINQ to SQL sẽ tự động đọc vào từ CSDL cho bạn. LINQ to SQL dựa trên những quy ước cho trước, bạn có thể dựa trên các quy ước này để tùy biến, chẳng hạn như thay đổi các thao tác mặc nhiên cho việc insert, update và delete bằng cách tạo ra những câu lệnh thao tác với CSDL (ví dụ “InsertCustomer”, “UpdateCustomer”, “DeleteCustomer”). Các phương thức này có thể gọi các thủ tục trong CSDL hay thực hiện thêm các thao tác để xử lý các thay đổi.
Entity Framework có các đặc tính nhắm đến các ứng dụng doanh nghiệp (“Enterprise Scenarios”). Trong một doanh nghiệp, một CSDL thông thường được kiểm soát bởi DBA (người quản trị CSDL), cấu trúc của CSDL thông thường được tối ưu cho việc lưu trữ (hiệu năng, tính toàn vẹn, phân hoạch) hơn là cho một mô hình ứng dụng tốt, và có thể thay đổi qua thời gian khi dữ liệu và việc sử dụng phát triển lên. Với ý tưởng này, Entity Framework được thiết kế xung quanh việc xây dựng một mô hình dữ liệu hướng tới ứng dụng, ít phụ thuộc, thậm chí có thể khác một chút so với cấu trúc CSDL thực sự. Ví dụ, bạn có thể ánh xạ một lớp đơn (hay “thực thể”) và nhiều table/view, hay ánh xạ nhiều lớp vào cùng một table/view. Bạn có thể ánh xạ vào một cấu trúc phân cấp vào một table/view đơn (như trong LINQ to SQL) hay vào nhiều table/view (ví dụ: person, customer, employee có thể nằm trong các bảng riêng biệt vì customer và employee chỉ chứa thêm một số thông tin không có trong person, hoặc lặp lại các cột từ bảng person). Bạn có thể nhóm các thuộc tính vào các kiểu phức hợp (“complex”, hay “composite”), ví dụ một kiểu Customer có thể có thuộc tính “Address” với kiểu Address có các thuộc tính Street, City, Region, Country và Postal). Entity Framework cũng cho phép bạn biểu diễn quan hệ nhiều-nhiều một cách trực tiếp, mà không cần tới bảng kết nối như một thực thể trong mô hình dữ liệu, và có một đặc tính mới được gọi là “Defining Query”, có thể được dùng cho việc biểu diễn một bảng ảo với dữ liệu lấy từ một câu truy vấn (ngoài trừ việc cập nhật phải thông qua một stored procedure). Khả năng ánh xạ mềm dẻo này, bao gồm tùy chọn dùng các stored procedure để xử lý các thay đổi, có thể được thực hiện chỉ bằng cách khai báo, hoặc chỉnh sửa lại khi yêu cầu thay đổi, mà không cần phải biên dịch lại ứng dụng.
Entity Framework bao gồm LINQ to Entities đưa ra nhiều tính năng giống với LINQ to SQL trên mô hình ứng dụng ở mức khái niệm; bạn có thể xây dựng các câu truy vấn trong LINQ (hay trong “entity SQL”, một phiên bản mở rộng của SQL để hỗ trợ các khái niệm như strong-typing, đa hình, kiểu phức hợp…) trả về kết quả ở dạng các đối tượng CLR, thực thi các thủ tục hay các hàm trả về kiểu bảng thông qua các phương thức, và cho phép gọi một phương thức để lưu lại các thay đổi.
Tuy nhiên, Entity Framwork còn hơn cả LINQ to Entities; nó bao gồm một lớp lưu trữ cho phép bạn dùng cùng mô hình ứng dụng mức khái niệm thông qua giao diện ADO.NET ở mức thấp dùng Entity SQL, và trả lại kết quả một cách hiệu quả nhờ các DataReader, giảm thiểu tải khi dùng trong các ngữ cảnh chỉ có đọc và không có các xử lý thêm.
Vậy nên, trong khi có nhiều phần bị trùng lắp, LINQ to SQL được nhắm đến việc phát triển nhanh ứng dụng cùng SQL Server, còn Entity Framework cung cấp các lớp truy xuất đối tượng và lưu trữ dữ liệu cho Microsoft SQL Server cũng như các CSDL khác thông qua khả năng ánh xạ mềm dẻo và ít phụ thuộc vào cấu trúc của CSDL.Tôi biết điều này dễ gây nhầm lẫn, và chúng tôi đang cố gắng tìm cách mô tả những điểm khác nhau đó nhằm giúp khách hàng có thể lựa chọn một cách đúng đắn. Xin hãy cho tôi biết nếu bài viết này có thể giúp ích cho bạn, hoặc còn điều gì chưa rõ ràng…
Thanks,
Michael Pizzo
Principal Architect
Microsoft Data Programmability