5

Mam niewielki problem z pozyskaniem Enity Framework 5 Enums do odwzorowania na kolumnę całkowitą w migracji. Oto co kod wygląda następująco:Niepoprawna wartość podczas zapisywania 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; } 
} 

Migracja wygląda następująco:

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"); 
    } 
} 

Jednak kiedy zapisać zmiany nie odzwierciedla ich w bazie danych.

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

Baza:

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

Czy kierujesz system .NET Framework 4 przez przypadek, a nie program .NET Framework 4.5? – Pawel

+0

Wybieram system .NET Framework 4.5. –

Odpowiedz

4

Powodem tego jest to, że wyliczenia są zagnieżdżone w klasie. Entity Framework nie wykrywa typów zagnieżdżonych. Spróbuj przenieść enum z klasy i sprawdź, czy to działa.

Edit

EF6 obsługuje teraz typy zagnieżdżone (w tym teksty stałe) przy użyciu kodu pierwszym podejściu.

+0

To było to. Dzięki, nie wiedziałem o tym ograniczeniu. –

Powiązane problemy