Đăng ký Đăng nhập
Trang chủ Tìm hiểu entity framework...

Tài liệu Tìm hiểu entity framework

.DOCX
75
206
100

Mô tả:

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM ---❧❧❧❧--- CÔNG NGHỆ .NET ĐỀ TÀI: TÌM HIỂU ENTITY FRAMEWORK Giảng viên hướng dẫn: ThS. Phạm Thi Vương Sinh viên thực hiện: HỒ CHÍ MINH – 01/2018 1 Nhận Xét Của Giảng Viên ……………………………………………………………………………………………………………… …………………………………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ……………………………………………………………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… 2 ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ……………………………………………………………………………………………………………… ………………………………………………. ………………………………………………………………………………………….. 3 I. Giới thiệu về Entity Framework: ‘’Entity Framework is Microsoft’s recommended data access technology for new applications EF là công nghệ truy vấn dữ liệu cho các ứng dụng mới được đề nghị sử dụng bởi Microsoft.’’ Entity Framework là các công nghệ hỗ trợ cho việc phát triển các phần mềm hướng đối tượng. Entity Framework cho phép nhà pháp triển làm việc với dữ liệu dưới dạng đối tượng cụ thể và các thuộc tình, giống như khách hàng và địa chỉ khách hàng, mà không cần quan tâm đến các bảng và cột bên dưới kho lưu trữ dữ liệu. Với Entity Framework nhà phát triển có thể làm việc ở cấp trừu tượng cao hơn khi xử lý dữ liệu, và có thể tạo và duy trì phần mềm hướng đối tượng ít mã hơn so với phần mềm truyền thống. A. Tổng quan Microsoft ADO.NET Entity Framework là một Object / Relational Mapping (ORM) làm giảm đi sự không tương hỗ giữa phương pháp phát triển hướng đối tượng của nhà phát triển .NET và thế giới của cơ sở dữ liệu quan hệ. Cho phép nhà phát triển chủ yếu tương tác với mô hình khái niệm của ứng dụng, sử dụng các kỹ thuật hướng đối tượng quen thuộc.Cho phép các nhà phát triển dể dàng làm việc với dữ liệu quan hệ như là các đối tượng domain-specific, loại bỏ đi sự khó khăn trong việc truy cập dữ liệu trước đây. Bằng cách sử dụng Entity Framework, truy vấn LINQ, thì việc lấy và thao tác dữ liệu như các đối tượng trở nên mạnh mẽ hơn. Entity Framework ORM cung cấp các dịch vụ như change tracking, idenity resolution, lazay loading, và truy vấn dữ liệu tập trung vào business logic của ứng dụng. O/RM ORM là kỹ thuật chuyển đổi dữ liệu giữa các hệ thống khác (không phải là mô hình hướng đối tượng) sang các đối tượng trong ngôn ngữ lập trình hướng đối tượng. Trong trường hợp này chúng ta chuyển dữ 4 liệu từ các dòng dữ liệu trong CSDL quan hệ sang đối tượng. Tìm hiểu thêm về O/RM tại đây. B.    O/RM là gì? O/RM là một công cụ để lưu dữ liệu từ domain objects tới quan hệ dữ liệu như MS SQL Server, nhưng tự động hóa. O/RM gồm 3 phần chính: Domain class objects, Relational database objects, Mapping information on how domain objects map to relational database objects (table, views, storedprocedures). O/RM giúp tách riêng database và domain class để dễ phát triển và maintain Hiểu đơn giản hơn, ORM là cộng cụ để generate class từ database: Có nhiều ORM frameworks dành cho .net trên thị trường như là: DataObjects.Net, NHibernate, OpenAccess, SubSonic. Lưu ý: Entity Framework là mã nguồn mở ORM framework của Microsoft. C. Tại sao nên sử dụng LinQ hay Entity Framework Với SQLExpress để truy vấn dữ liệu ta phải dùng đến các câu lệnh Query khá phức tạp. Hơn nữa để sử dụng trong ứng dụng C# lại thêm 1 tầng phức tạp nữa với các câu lệnh: dùng ConnectionString khởi tạo kết nối tới DataBase, tự khai báo các biến để chạy 1 lệnh - command, rồi còn phải tính toán đầu ra của câu lệnh... Thật là quá phức tạp nếu như ta có 1 chương trình "khủng". Vậy làm sao để giải quyết vấn đề này? 5 Lợi ích lớn nhất của EF là giúp lập trình viên giảm thiểu việc lập trình mã nguồn cần thiết để truy cập và tương tác với cơ sở dữ liệu. EF được Microsoft hỗ trợ phát triển lâu dài và bền vững, vì vậy EF là 1 framework mạnh nhất hiện nay để phát triển ứng dụng Web với sự hỗ trợ đông đảo của các nhà phát triển Web. II. Hướng dẫn cài đặt Entity Framework EF bao gồm EF Tools cho Visual Studio và EF Runtime A. EF Tools dành cho Visual Studio. EF6 Tools đã được thêm vào từ phiên bản VS 2013. Nếu bạn đang sử dụng phiên bản VS 2012 thì có thể cài đặt tại đây. (Bạn phải đảm bảo Microsoft Web Developer Tools hoặc Microsoft SQL Server Data Tools đã được cài đặt trước khi cài đặt EF Tools). B. EF Runtime    Phiên bản mới nhất của Entity Framework đã có trên NuGet. Cài đặt EF Nuget Package Bạn có thể cài EF package bằng cách click phải vào folder References và chọn Manage NuGet Packages …  Để cài Entity Framework, bạn nhấn chuột phải vào thư mục References (hoặc bin) trong dự án Web và chọn Manage NuGet Packages. 6 Sau đó bạn tìm và cài đặt gói Entity Framework vào dự án Web Cài đặt gói EF bằng dòng lệnh (Package Manger Console) Bạn chọn thư mục cần cài đặt EF (bin hoặc References), sau đó chọn menu Tools -> Library Package Manager -> Package Manager Console như trong hình. 7 Ở phần dòng lệnh dưới đáy bộ công cụ, bạn gõ: Install-Package EntityFramework Cài đặt bản EF mới nhất Để cài đặt phiên bản EF mới nhất, bạn có thể chọn Include Prerelease trong cửa sổ Manage NuGet Package. 8 III. Kiến trúc của Entity Framework Có 2 tầng chính trong ứng dụng Entity Framework: - Tầng model Tầng object Tầng model có 3 thành phần: - - - Mô hình khái niệm 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). Mô hình khái niệm chứa các lớp mô hình và mối quan hệ giữa các lớp này. Điều này để độc lập với mô hình quan hệ các bảng trong database. Mô hình ánh xạ 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. Mô hình ánh xạ gồm thông tin về cách mô hình khái niệm được ánh xạ đến mô hình lưu trữ. Mô hình lưu trữ 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. Mô hình lưu trữ là 1 mô hình thiết kế database bao gồm các bảng, view, stored procedure (thủ tục), và mối quan hệ giữa chúng và các khóa. Mô hình này thể hiện gần giống mô hình quan hệ các bảng trong database. 9 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 quá 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 hoàn toà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 Thật sự, khi bắt tay xây dựng nhiều dự án Web, vị trí thường thấy EF ở các dự án website trên thực tế như mô hình sau. Trong hình trên, EF dường như có vị trí rất tự do, xuất hiện ở cả 3 tầng Data Access Layer, Business Layer, và cả Presentation Layer. Các bạn có thể hình dung EF như là 1 thư viện, hễ tầng nào cần thì chỉ cần gọi đến. Mô hình này xuất phát có thể là sự cẩu thả của lập trình viên khi không thích tuân theo tiêu chuẩn quan hệ giữa các tầng hoặc cách giải thích khác là sự lỏng lẻo giúp cho việc lập trình thuận tiện hơn. Trong vài mô hình người ta gom tầng Data Access Layer và Business Layer chỉ làm tầng Data Model, và vị trí EF cũng bao hàm tầng Data Model và 16 Presentation Layer như hình. Đến đây, bạn có thể hiểu 1 cách chung nhất EF có vị trí trung gian, đóng vai trò kết nối giữa cơ sở dữ liệu và các thành phần khác của 1 dự án Web khi cần đến. Ngoài ra, có nhiều cách hiểu về vị trí của EF ở đâu trong mô hình Web, bạn sẽ dần khám phá để đưa ra cách hiểu và định nghĩa riêng trong quá trình thiết kế và xây dựng dự án Web ASP.NET. V. Các phiên bản của Entity framework 2 phiên bản đầu tiên của EF đi kèm với .NET framework và được đặt tên phiên bản cùng với tên phiên bản .NET tương ứng là 3.5 và 4. Sau 2 phiên bản này EF đã cho ra các phiên bản độc lập. Các phiên bản của EF và tính năng của chúng. EF Phiên bản đầu tiên đi kèm với .NET 3.5 SP1 và Visual Studio 2008 hay SP1. Bản này chỉ cung cấp hỗ trợ kỹ thuật O/RM cơ bản sử dụng EF quy trình Database first 17 3.5 EF Bản này đi kèm với .NET Framework 4 và Visual Studio 2010. Các 4.0 tính năng mới trong bảng này gồm: hỗ trợ POCO, lazy loading, testability improvements, customizable code generation và quy trình Model First. Mặc dù là phiên bản thứ 2 nhưng lại được đặt là EF 4 để phù hợp với phiên bản .NET đi chung. Sau bản này thì Microsoft đã bắt đầu cung cấp EF sẵn có trên NuGet và không còn gắn liền EF với phiên bản .NET Framework Phiên bản 4.1 là bản đầu tiên được publish trên NuGet. Phiên bản 4.1 này thêm các tính năng: DbContext API đơn giản và quy trình Code EF First. Sửa bug phiên bản trước và giới thiệu các component để giúp cho 4.1. thời gian thiết kế để làm việc với Code Frist model dễ dàng hơn. 1 Các component này được sử dụng bởi Code First Migrations ( trong EF bảng EF 4.3 và EF Power Tools. Sửa bug phiên bản trước. 4.2 EF 4.3 Phiên bản này bao đồm tính năng Code First Migrations tính năng này cho phếp cơ sở dữ liệu được tạo ra bởi Code First có thê tăng sự thay đổi khi Code First Model phát triển. EF 4.3. Phiên bản này sửa bug của phiên bản trước và giới thiệu sự hỗ trợ LocalDb tốt hơn cho người dùng sử dụng EF 4.3 với Visual Studio 2012. 1 EF 5 Bản release này được sử dụng trong VS2010 và VS 2012 để viết 18 ứng dụng có sử dụng .NET 4.0 và .NET 4.5. Khi hướng đến .NET 4.5 bản release có giới thiệu thêm một vài tính năng mới như hỗ trợ enum, table-valued functions, spatial data types và cải thiệu nhiều về performance. Nếu bạn cài đặt một model mới sử dụng EF Designer trong VS 2012, the EF5 NuGet package sẽ được cài vào project và tự động sinh code để sử dụng EF5. Khi tạo projects mới về ASP.NET trong VS 2012 ( bao gồm cả project về MVC) cũng sẽ được cài đặt EF5 NuGet đi kèm mặt định. EF Designer trong VS2012 cũng hỗ trợ multiple-diagrams cho một model, thay đổi màu cho các khối trong bản thiết kế và import STD EF 6 Bản release này được sử dụng trong VS 2013, VS 2012 và VS 2010( chỉ EF Runtime) để viết ứng đụng hướng đến .NET 4.0 và .NET 4.5. Tooling The EF6 Tooling is included in Visual Studio 2013 and available for download for Visual Studio 2012. See the Get Entity Frameworkpage for more information. The focus for the tooling in EF6 was to add support for the EF6 runtime and to enable shipping out-of-band between releases of Visual Studio. The tooling itself does not include any new features, but most of the new runtime features can be used with models created in the EF Designer. Runtime The EF6 runtime can be installed from NuGet. See the Get Entity Framework page for more information. The following features work for models created with Code First or the EF Designer: - Async Query and Save adds support for the task-based asynchronous patterns that were introduced in .NET 4.5. 19 - Connection Resiliency enables automatic recovery from transient connection failures. - Code-Based Configuration gives you the option of performing configuration – that was traditionally performed in a config file – in code. - Dependency Resolution introduces support for the Service Locator pattern and we've factored out some pieces of functionality that can be replaced with custom implementations. - Interception/SQL logging provides low-level building blocks for interception of EF operations with simple SQL logging built on top. - Testability improvements make it easier to create test doubles for DbContext and DbSet when using a mocking framework or writing your own test doubles. - DbContext can now be created with a DbConnection that is already opened which enables scenarios where it would be helpful if the connection could be open when creating the context (such as sharing a connection between components where you can not guarantee the state of the connection). - Improved Transaction Support provides support for a transaction external to the framework as well as improved ways of creating a transaction within the Framework. - Enums, Spatial and Better Performance on .NET 4.0 - By moving the core components that used to be in the .NET Framework into the EF NuGet package we are now able to offer enum support, spatial data types and the performance improvements from EF5 on .NET 4.0. - Improved performance of Enumerable.Contains in LINQ queries. - Improved warm up time (view generation), especially for large models. - Pluggable Pluralization & Singularization Service. - Custom implementations of Equals or GetHashCode on entity classes are now supported. - DbSet.AddRange/RemoveRange provides an optimized way to add or remove multiple entities from a set. - DbChangeTracker.HasChanges provides an easy and efficient way to see if there are any pending changes to be saved to the database. - SqlCeFunctions provides a SQL Compact equivalent to the SqlFunctions. The following features apply to Code First only: 20
- Xem thêm -

Tài liệu liên quan