5

Tôi gặp một chút khó khăn khi nhận Entity Framework 5 Enums để ánh xạ tới cột số nguyên trong quá trình di chuyển. Đây là những gì mã trông giống như:Giá trị không chính xác khi lưu enum

[Table("UserProfile")] 
public class UserProfile 
{ 
    public enum StudentStatusType 
    { 
     Student = 1, 
     Graduate = 2 
    } 

    [Key] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public string FullName { get; set; } 
    public StudentStatusType Status { get; set; } 
} 

Việc chuyển trông như thế này:

public partial class EnumTest : DbMigration 
{ 
    public override void Up() 
    { 
     AddColumn("UserProfile", "Status", c => c.Int(nullable: false, defaultValue:1)); 
    } 

    public override void Down() 
    { 
     DropColumn("UserProfile", "Status"); 
    } 
} 

Tuy nhiên khi tôi lưu các thay đổi nó không phản ánh chúng trong cơ sở dữ liệu.

var user = new UserProfile(); 
user.Status = UserProfile.StudentStatusType.Graduate; 
user.FullName = "new"; 
user.UserName = "new"; 
users.UserProfiles.Add(user); 
users.SaveChanges(); 

Cơ sở dữ liệu:

---------------------------------------------------- 
|UserId | UserName | FullName | Status | 
---------------------------------------------------- 
|1  | new  | new  | 1  | 
---------------------------------------------------- 
+0

Bạn đang nhắm mục tiêu .NET Framework 4 theo bất kỳ cơ hội nào và không .NET Framework 4.5? – Pawel

+0

Tôi đang nhắm mục tiêu Khuôn khổ .NET 4.5. –

Trả lời

4

Lý do cho điều này là enum được lồng trong một lớp học. Entity Framework không phát hiện ra các loại lồng nhau. Hãy thử di chuyển enum ra khỏi lớp và xem nó hoạt động.

Sửa

EF6 bây giờ hỗ trợ các loại lồng nhau (bao gồm cả sự đếm) khi sử dụng phương pháp mã đầu tiên.

+0

Đó là nó. Cảm ơn, tôi không biết về hạn chế đó. –

Các vấn đề liên quan