EF 6 - Enum

Enum trong EF 6

Enum được hỗ trợ từ phiên bản Entity Framework 5.0 trở lên. Enum có thể được tạo cho các kiểu dữ liệu sau:

  • Int16
  • Int32
  • Int64
  • Byte
  • SByte

Enum can be used in the following ways:

  1. Convert an existing property of an entity to enum type from EDM designer.
  2. Use an existing enum type from a different namespace.

Chuyển đổi một thuộc tính hiện có thành Enum

Chúng ta sẽ sử dụng cột số nguyên TeacherType trong bảngTeacher. Giá trị enum 1, 2, 3. Giá trị 1 là giáo viên cơ hữu, Giá trị 2 là giáo viên hợp đồng, Giá trị 3 là giáo viên thỉnh giảng.

Enum in Entity Framework 6

Bây giờ, để chuyển thuộc tính TeacherType thành kiểu enum, hãy nhấp chuột phải vào thuộc tính TeacherType của bảng Teacher và nhấp vào Convert to Enum trong menu, như được hiển thị bên dưới.

Enum in Entity Framework 6

Sẽ mở hộp thoại Add Enum Type. Nhập Tên Loại Enum và chọn int32 trong menu thả xuống 'Underlying Type' Nhập tên thành viên enum như hình dưới đây.

Enum in Entity Framework 6

Đã thêm TeacherType dưới dạng Enum Type trong Model Browser, như được hiển thị bên dưới:

Enum in Entity Framework 6

Ngoài ra, chúng ta thấy rằng loại thuộc tính TeacherType được chuyển đổi thành TeacherType Enum:

Enum in Entity Framework 6

Bây giờ, bạn có thể sử dụng TeacherType Enum để gán một giá trị của TeacherType thay vì một giá trị số nguyên, như hình dưới đây.

using (var ctx = new SchoolDBEntities())
{
    Teacher tchr = new Teacher();
    tchr.TeacherName = "New Teacher";

    //assign enum value
    tchr.TeacherType = TeacherType.Permanent;

    ctx.Teachers.Add(tchr);

    ctx.SaveChanges();
}

Cách sử dụng một Enum hiện có từ một Namespace tên khác

Nếu bạn đã có một kiểu Enum được tạo , thì bạn có thể sử dụng kiểu đó làm kiểu dữ liệu của bất kỳ thuộc tính thực thể nào.

Để sử dụng kiểu Enum hiện có, nhấp chuột phải vào Designer → Add New → Enum Type. Nhập Tên Loại Enum vào hộp thoại. Không nhập thành viên vì chúng ta đã có thành viên đó trong code.

Bây giờ, hãy chọn hộp kiểm 'Reference external type' và nhập namespace của enum hiện có của bạn và nhấp vào OK. Thao tác này sẽ thêm loại Enum trong trình duyệt Model. Bây giờ, bạn có thể gán loại Enum này cho bất kỳ thuộc tính thích hợp nào của bất kỳ thực thể nào từ cửa sổ thuộc tính.

Lưu ý: Chọn thuộc tính 'Set Flags attribute'  nếu bạn muốn sử dụng toán tử bitwise với Enum của mình.