Khung thực thể - Hỗ trợ Enum

Trong Entity Framework, tính năng này sẽ cho phép bạn xác định một thuộc tính trên một lớp miền là một kiểu enum và ánh xạ nó đến một cột cơ sở dữ liệu kiểu số nguyên. Entity Framework sau đó sẽ chuyển đổi giá trị cơ sở dữ liệu sang và từ enum có liên quan khi nó truy vấn và lưu dữ liệu.

  • Các kiểu được liệt kê có tất cả các loại lợi ích khi làm việc với các thuộc tính có số lượng phản hồi cố định.

  • Tính bảo mật và độ tin cậy của ứng dụng đều tăng lên khi bạn sử dụng kiểu liệt kê.

  • Việc liệt kê làm cho người dùng khó mắc lỗi hơn nhiều và các vấn đề như tấn công tiêm là không tồn tại.

  • Trong Khung thực thể, một kiểu liệt kê có thể có các kiểu cơ bản sau:

    • Byte
    • Int16
    • Int32
    • Int64
    • SByte
  • Kiểu cơ bản mặc định của các phần tử liệt kê là int.

  • Theo mặc định, điều tra viên đầu tiên có giá trị 0 và giá trị của mỗi điều tra viên kế tiếp được tăng lên 1.

Hãy xem ví dụ sau, trong đó chúng ta sẽ tạo một thực thể trong trình thiết kế và sau đó sẽ thêm một số thuộc tính.

Step 1 - Tạo dự án mới từ tùy chọn menu File → New → Project.

Step 2 - Trong ngăn bên trái, chọn Ứng dụng bảng điều khiển.

Step 3 - Nhập EFEnumDemo làm tên của dự án và nhấn OK.

Step 4 - Nhấp chuột phải vào tên dự án trong Solution Explorer và chọn tùy chọn menu Add → New Item.

Step 5 - Chọn ADO.NET Entity Data Model trong ngăn Templates.

Step 6 - Nhập EFEnumModel.edmx cho tên tệp, sau đó bấm Thêm.

Step 7 - Trên trang Entity Data Model Wizard, chọn Empty EF designer Model.

Step 8 - Nhấp vào Kết thúc

Step 9 - Sau đó nhấp chuột phải vào cửa sổ trình thiết kế và chọn Thêm → Thực thể.

Hộp thoại Thực thể Mới xuất hiện như trong hình sau.

Step 10 - Nhập Phòng làm tên thực thể và DeptID làm tên thuộc tính, để loại Thuộc tính là Int32 và nhấp OK.

Step 11 - Nhấp chuột phải vào thực thể và chọn Thêm mới → Thuộc tính vô hướng.

Step 12 - Đổi tên thuộc tính mới thành DeptName.

Step 13 - Thay đổi kiểu của thuộc tính mới thành Int32 (theo mặc định, thuộc tính mới là kiểu Chuỗi).

Step 14 - Để thay đổi kiểu, mở cửa sổ Thuộc tính và thay đổi thuộc tính Kiểu thành Int32.

Step 15 - Trong Entity Framework Designer, nhấp chuột phải vào thuộc tính Name, chọn Convert to enum.

Step 16 - Trong hộp thoại Add Enum Type, hãy nhập DepartmentNames cho Tên Enum Type, thay đổi Underlying Type thành Int32, sau đó thêm các thành viên sau vào loại: Vật lý, Hóa học, Máy tính và Kinh tế.

Step 17 - Bấm Ok.

Nếu bạn chuyển sang cửa sổ Trình duyệt Mô hình, bạn sẽ thấy rằng kiểu cũng đã được thêm vào nút Kiểu Enum.

Hãy tạo cơ sở dữ liệu từ mô hình bằng cách làm theo tất cả các bước được đề cập trong chương tiếp cận Mô hình thứ nhất.

Step 1 - Nhấp chuột phải vào bề mặt Entity Designer và chọn Generate Database from Model.

Hộp thoại Chọn Kết nối Dữ liệu của Bạn của Trình hướng dẫn Tạo Cơ sở dữ liệu được hiển thị.

Step 2 - Nhấp vào nút Kết nối Mới.

Step 3 - Nhập tên máy chủ và EnumDemo cho cơ sở dữ liệu và nhấn OK.

Step 4 - Hộp thoại hỏi bạn có muốn tạo cơ sở dữ liệu mới không sẽ bật lên, nhấn Yes.

Step 5- Nhấp vào Tiếp theo và Trình hướng dẫn Tạo Cơ sở dữ liệu tạo ngôn ngữ định nghĩa dữ liệu (DDL) để tạo cơ sở dữ liệu. Bây giờ hãy nhấp vào Kết thúc.

Step 6 - Nhấp chuột phải vào T-SQL Editor và chọn Execute.

Step 7 - Để xem lược đồ đã tạo, nhấp chuột phải vào tên cơ sở dữ liệu trong SQL Server Object Explorer và chọn Refresh.

Bạn sẽ thấy bảng Phòng ban trong cơ sở dữ liệu.

Hãy xem ví dụ sau, trong đó một số đối tượng Bộ mới trong ngữ cảnh được thêm và lưu. Và sau đó truy xuất bộ phận Máy tính.

class Program {

   static void Main(string[] args) {

      using (var context = new EFEnumModelContainer()) {

         context.Departments.Add(new Department { DeptName = DepartmentNames.Physics});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Computer});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Chemistry});
         context.Departments.Add(new Department { DeptName = DepartmentNames.Economics});

         context.SaveChanges();

         var department = (
            from d in context.Departments
            where d.DeptName == DepartmentNames.Computer
            select d
         ).FirstOrDefault();

         Console.WriteLine(
            "Department ID: {0}, Department Name: {1}", 
               department.DeptID, department.DeptName
         );

         Console.ReadKey();
      }
   }
}

Khi đoạn mã trên được thực thi, bạn sẽ nhận được kết quả sau:

Department ID: 2, Department Name: Computer

Chúng tôi khuyên bạn nên thực hiện ví dụ trên theo cách từng bước để hiểu rõ hơn.