Lập trình hướng đối tượng 2 - Entity framework

ppt 39 trang vanle 3250
Bạn đang xem 20 trang mẫu của tài liệu "Lập trình hướng đối tượng 2 - Entity framework", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptlap_trinh_huong_doi_tuong_2_entity_framework.ppt

Nội dung text: Lập trình hướng đối tượng 2 - Entity framework

  1. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2 Entity Framework
  2. Nội dung ❖Lịch sử Data Access ❖O/RM là gì? ❖Tổng quan về EF ❖Truy vấn trong EF ❖Phát triển ứng dụng với EF
  3. Lịch sử Data Access Accessing before ‘90s • RAW Data, Direct APIs Accessing data in 1990 • ODBC (abstract call-level) Accessing pre .Net • OLE DB, ADO (object level) Accessing data in .Net • ADO.NET, Datasets, DataReaders Today • Linq, Entity Framework O/RM?
  4. O/RM là gì? ❖ Object ❖ Relational ❖ Mapping ❖ O/RM là một kỹ thuật chuyển đổi dữ liệu giữa các hệ thống không tương thích, giữa RDBMS và OOP (mô hình cơ sở dữ liệu quan hệ và mô hình hướng đối tượng)
  5. O/RM là gì?
  6. Lý do sử dụng O/RM ❖ ORM có nhiều thuận lợi hơn so với những phương pháp truy xuất dữ liệu (data access) khác: ▪ ORM tự động hóa việc chuyển đổi từ object sang table và từ table sang object, giúp giảm thời gian và chi phí phát triển ▪ Tăng tốc độ thực thi của hệ thống ❖ Một giải pháp ORM tốt sẽ giúp ứng dụng nhanh hơn và dễ hỗ trợ hơn.
  7. ADO.Net Entity Framework ❖ Entity Framework là một O/RM trong .NET Framework ❖ Là một framework truy xuất dữ liệu ❖ Hỗ trợ các ứng dụng database ❖ Cho phép lập trình trên mô hình ứng dụng mức khái niệm ❖ Khả năng độc lập với bất kỳ cơ sở dữ liệu ❖ Entity Framework dựa trên nền tảng của ADO.NET
  8. ADO.Net Entity Framework ❖ Sử dụng ADO.NET Entity Framework để xây dựng các ứng dụng hướng dữ liệu mang lại các lợi ích sau: ▪ Rút ngắn được thời gian phát triển ứng dụng do Framework đã cung cấp sẵn các tính cơ bản cho việc truy xuất dữ liệu và các lập trình viên có thể tập trung vào mặt logic của ứng dụng. ▪ Các lập trình viên làm việc với mô hình ứng dụng hướng đối tượng đúng nghĩa: thừa kế, xây dựng các thành viên phức tạp,
  9. ADO.Net Entity Framework ▪ Không phụ thuộc quá nhiều vào mô hình lưu trữ do ADO.NET Entity Framework cung cấp mô hình khái niệm độc lập với 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, không cần phải thay đổi code của ứng dụng. ▪ Hỗ trợ việc sử dụng LINQ to Entities mang lại các tính năng như IntelliSense và kiểm tra tính hợp lệ tại thời điểm biên dịch
  10. ADO.NET Entity Framework EF .NET Entity Provider (Entity SQL) Programming Model Conceptual Model Reader Connection LINQ Entity Entity relationship Command Object Relational Mapping Mapping (MSL) V2.0 .NET Data Provider Reader Connection Store Adapter Command
  11. Kiến trúc Entity Framework
  12. Kiến trúc Entity Framework
  13. Linq To SQL vs Linq To Entities LINQ to SQL LINQ to Entities Database Independent (SQL Server, DB2, Oracle, Microsoft SQL Server Sybase, MySQL, ) Simple (1-to-1) Object Relational Mapping Complex (including many-to-many) Object capabilities Relational Mapping capabilities Ideal for building conceptual data models that Ideal for quick data access construction to aggregate a variety of tables, sources, service relatively well designed SQL Server databases etc. into a mash-up domain model Status: Supported but NOT strategic!  Status: Strategic! ☺
  14. EDM – Entity Data Model ❖ Được phát minh bởi Dr. Peter Chen (1970s) đặt tên là ERM (Entity Relationship Model) ❖ ERM ▪ Conceptual Layer ▪ Mapping Layer ▪ Storage Layer ❖ Hiện tại: EDM nằm trong Entity Framework
  15. EDM – Entity Data Model
  16. Mapping Examples (1) Store Mapping Entities Good Customers Type=“G” ID Customers FirstName CustomerId LastName First Last Bad Customers Type ID ForeName Surname Type=“B”
  17. Mapping Examples (2) Store Mapping Entities Customers Customer ID CustomerId FirstName First LastName Last IsPremium ? Overdraft AccountManager PremiumCustomer Overdraft AccountManager
  18. Mapping Examples (3 – View + SPs ) Store Mapping Entities ClientView1 select c.id, c.name from UkCustomer customers c where CustomerId c.country = ‘UK’ Name p_DeleteUkCustomer p_UpdateUkCustomer p_InsertUkCustomer
  19. EDM – Entity Data Model →Là một file XML (.edmx)
  20. Truy vấn trong EF ❖ Có 3 loại truy vấn trong EF: ▪ LINQ to Entities ▪ Entity SQL with Object Services ▪ Entity SQL with Entity Client
  21. LINQ to Entities ❖ Các truy vấn được viết theo cú pháp LINQ ❖ Hỗ trợ các tính năng LINQ QLBHEntities data = new QLBHEntities(); var list = from sp in data.SanPhams select new { sp.MaSanPham, sp.TenSanPham, sp.MaLoai, sp.DonGia }; dgSanPham.DataSource = list;
  22. Entity SQL ObjectServices ❖ Giống ngôn ngữ truy vấn T-SQL ❖ Có thể truy vấn EDM ❖ EF chuyển Entity SQL thành các truy vấn SQL đến CSDL QLBHEntities data = new QLBHEntities(); string query = @”SELECT Value sp FROM SanPhams as sp WHERE sp.TenSanPham=‘ ’”; var list = data.CreateQuery (query); dgSanPham.DataSource = list;
  23. Entity Client ❖ Các truy vấn ADO.NET kiểu “cũ” ❖ Dành cho các lập trình quen thuộc với ADO.NET EntityConnection conn = new EntityConnection("name = QLBHEntities"); conn.Open(); var query = "SELECT Value sp FROM QLBHEntities.SanPhams as sp"; EntityCommand cmd = new EntityCommand(query, conn); EntityDataReader dr= cmd.ExecuteReader(CommandBehavior.SequentialAccess); List list = new List (); while (dr.Read()) { SanPham sp = new SanPham(); sp.MaSanPham = dr.GetString(0); sp.TenSanPham = dr.GetString(1); sp.MaLoai = dr.GetString(2); sp.DonGia = dr.GetInt32(3); list.Add(sp); } dgSanPham.DataSource = list;
  24. Entity Client (cont) ❖ Tương tự như mô hình ADO.NET: ▪ EntityCommand ▪ EntityConnection ▪ EntityDataReader ▪ EntityParameter ▪ EntityTransaction ❖ Sử dụng EntityDataReader để đọc dữ liệu ❖ Truy xuất Read-only vào EDM.
  25. Truy vấn trong EF Truy vấn Cú pháp Kết quả Lợi ích Hiệu suất Object Context Entity Objects w/change tracking; LINQ to Entities LINQ or Anonymous Intellisense; Type Language Integration Object Context Entity Objects EntitySQL w/change tracking; Entity SQL or (ObjectServices) Build Dynamic dbDataRecords Queries; Plug into existing EntityClient Entity SQL dbDataReader DAL
  26. Lấy danh sách sản phẩm QLBHEntities data = new QLBHEntities(); var listsp = from sp in data.SanPhams select new { sp.MaSanPham, sp.TenSanPham, sp.MaLoai, sp.DonGia }; dgSanPham.DataSource = listsp;
  27. Thêm sản phẩm mới QLBHEntities data = new QLBHEntities(); SanPham sp = new SanPham(); sp.MaSanPham = txtMaSanPham.Text; sp.TenSanPham = txtTenSanPham.Text; sp.MaLoai = cboLoai.SelectedValue.ToString(); sp.DonGia = Convert.ToInt32(txtDonGia.Text); data.AddToSanPhams(sp); data.SaveChanges();
  28. Cập nhật sản phẩm QLBHEntities data = new QLBHEntities(); SanPham sanpham = (from sp in data.SanPhams where sp.MaSanPham == txtMaSanPham.Text.Trim() select sp).Single (); //sanpham.MaSanPham = txtMaSanPham.Text.Trim(); sanpham.TenSanPham = txtTenSanPham.Text; sanpham.MaLoai = cboLoai.SelectedValue.ToString(); sanpham.DonGia = Convert.ToInt32l(txtDonGia.Text); data.SaveChanges();
  29. Xoá sản phẩm QLBHEntities data = new QLBHEntities(); SanPham sanpham = (from sp in data.SanPhams where sp.MaSanPham == txtMaSanPham.Text.Trim() select sp).Single (); data.DeleteObject(sanpham); data.SaveChanges();
  30. EF and 3-Layers ❖Code này nằm ở đâu? Presentation Layer var sanpham = from sp in db.SanPhams Business Logic Layer where sp.TenSanPham =“ ” select sp; Data Access Layer Data Sources
  31. EF and 3-Layers Entity Framework = DAL Forms UI Presentation Business Business Objects Data Access CS MSL SS ADO.NET ADO.NET Entities Entity Object Client Services
  32. EDM = Entity Data Model EF = ADO.NET Entity Framework ESQL = Entity SQL LINQ = Language Integrated Query CSDL = Conceptual Schema Definition Language SSDL = Store Schema Definition Language MSDL = Mapping Schema Definition Language Lambda Syntax = customer.Select( ) Comprehension Syntax = from c in customer SQL = Structured Query Language ☺