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:
- Convert an existing property of an entity to enum type from EDM designer.
- 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.
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.
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.
Đã thêm TeacherType dưới dạng Enum Type trong Model Browser, như được hiển thị bên dưới:
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:
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.