Khung thực thể - Di chuyển

Trong Entity Framework 5 và các phiên bản trước của Entity Framework, mã được phân tách giữa các thư viện lõi (chủ yếu là System.Data.Entity.dll) được vận chuyển như một phần của .NET Framework và các thư viện bổ sung (chủ yếu là EntityFramework.dll) đã được phân phối và được vận chuyển bằng NuGet như trong sơ đồ sau.

Trong Entity Framework 6, các API cốt lõi trước đây là một phần của .NET framework cũng được vận chuyển và phân phối như một phần của gói NuGet.

Điều này là cần thiết để cho phép Entity Framework được tạo thành mã nguồn mở. Tuy nhiên, do đó, các ứng dụng sẽ cần được xây dựng lại bất cứ khi nào có nhu cầu di chuyển hoặc nâng cấp ứng dụng của bạn từ các phiên bản cũ hơn của Entity Framework lên EF 6.

Quá trình di chuyển diễn ra đơn giản nếu ứng dụng của bạn sử dụng DbContext, được chuyển trong EF 4.1 trở lên. Nhưng nếu ứng dụng của bạn là ObjectContext thì bạn cần thực hiện thêm một số công việc.

Hãy cùng xem các bước sau bạn cần thực hiện để nâng cấp ứng dụng hiện có lên EF6.

Step 1 - Bước đầu tiên là nhắm mục tiêu .NET Framework 4.5.2 và sau đó nhấp chuột phải vào dự án của bạn và chọn thuộc tính.

Step 2 - Nhấp chuột phải vào dự án của bạn một lần nữa và chọn Quản lý gói NuGet ...

Step 3- Trong tab Trực tuyến, chọn EntityFramework và nhấp vào Cài đặt. Đảm bảo rằng các tham chiếu lắp ráp đến System.Data.Entity.dll đã bị loại bỏ.

Khi bạn cài đặt gói EF6 NuGet, nó sẽ tự động xóa mọi tham chiếu đến System.Data.Entity khỏi dự án của bạn cho bạn.

Step 4 - Nếu bạn có bất kỳ mô hình nào được tạo bằng EF Designer, thì bạn cũng sẽ cần cập nhật các mẫu tạo mã để tạo mã tương thích EF6.

Step 5 - Trong Trình khám phá Giải pháp của bạn dưới tệp edmx của bạn, hãy xóa các mẫu tạo mã hiện có thường được đặt tên là <edmx_file_name> .tt và <edmx_file_name> .Context.tt.

Step 6 - Mở mô hình của bạn trong EF Designer, nhấp chuột phải vào bề mặt thiết kế và chọn Thêm mục tạo mã ...

Step 7 - Thêm mẫu tạo mã EF 6.x thích hợp.

Nó cũng sẽ tự động tạo mã tương thích EF6.

Nếu các ứng dụng của bạn sử dụng EF 4.1 trở lên, bạn sẽ không cần thay đổi bất kỳ điều gì trong mã, vì không gian tên cho các loại DbContext và Code First không thay đổi.

Nhưng nếu ứng dụng của bạn đang sử dụng phiên bản Entity Framework cũ hơn thì các loại như ObjectContext trước đây trong System.Data.Entity.dll đã được chuyển sang không gian tên mới.

Step 8 - Bạn sẽ cần cập nhật các chỉ thị sử dụng hoặc Nhập để xây dựng dựa trên EF6.

Quy tắc chung cho những thay đổi không gian tên là bất kỳ kiểu nào trong System.Data. * Đều được chuyển đến System.Data.Entity.Core. *. Sau đây là một số trong số họ -

  • System.Data.EntityException ⇒ System.Data.Entity.Core.EntityException
  • System.Data.Objects.ObjectContext ⇒ System.Data.Entity.Core.Objects.ObjectContext;
  • System.Data.Objects.DataClasses.RelationshipManager ⇒ System.Data.Entity.Core.Objects.DataClasses.RelationshipManager;

Một số kiểu nằm trong không gian tên Core vì chúng không được sử dụng trực tiếp cho hầu hết các ứng dụng dựa trên DbContext.

  • System.Data.EntityState ⇒ System.Data.Entity.EntityState
  • System.Data.Objects.DataClasses.EdmFunctionAttribute ⇒ System.Data.Entity.DbFunctionAttribute

Dự án Entity Framework hiện tại của bạn sẽ hoạt động trong Entity Framework 6.0 mà không có bất kỳ thay đổi lớn nào.