我很难让Entity Framework 5 Enums映射到迁移中的整数列。这是代码的样子:
[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; }
}
迁移看起来像这样:
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");
}
}
但是,当我保存更改时,它不会将它们反映在数据库中。
var user = new UserProfile();
user.Status = UserProfile.StudentStatusType.Graduate;
user.FullName = "new";
user.UserName = "new";
users.UserProfiles.Add(user);
users.SaveChanges();
数据库:
----------------------------------------------------
|UserId | UserName | FullName | Status |
----------------------------------------------------
|1 | new | new | 1 |
----------------------------------------------------
答案 0 :(得分:4)
原因是enum嵌套在一个类中。实体框架不会发现嵌套类型。尝试将enum移出课堂,看看它是否有效。
修改强>
使用Code First方法时,EF6现在支持嵌套类型(包括枚举)。