1

我对 ASP.NET MVC 3 和枚举有一个“小”问题:

我的人物模型:

namespace AcTIV.Models
{
    public enum Sex { Male, Female };

    public class Person
    {
        public int PersonID { get; set; }
        public string Name { get; set; }
        public Sex Sexo { get; set; }
    }
}

我的初始化器:

namespace AcTIV.DAL
{
    public class AcTIVInitializer : DropCreateDatabaseAlways<AcTIVContext>
    {
        protected override void Seed(AcTIVContext context)
        {    
            var persons = new List<Person>
            {
                new Person { Name = "Mary Lee", Sexo = Sex.Female }
            };
            persons.ForEach(s => context.Persons.Add(s));
            context.SaveChanges();
        }
    }
}

到现在为止还挺好。我的手表显示正确的值。

persons[0].Name = "Mary Lee"  
persons[0].Sexo = Female  

现在,我的人控制器:

namespace AcTIV.Controllers
{
    public class PersonController : Controller
    {
        private UnitOfWork unitOfWork = new UnitOfWork();

        public ViewResult Index()
        {
            Person person = unitOfWork.PersonRepository.GetByID(1); //Just for test
            //return View(unitOfWork.PersonRepository.Get().ToList());
        }
    }
}

我的手表在这里显示错误的枚举值:

person.Name = "Mary Lee"  
person.Sexo = Male  

我究竟做错了什么?

- - 解决了 - -

答案在另一个 stackoverflow 帖子 中:如何使用 EF Code First 解释枚举类型

4

2 回答 2

1

您使用的是 EF4.3 吗?我相信enum支持仅在 EF5 中可用

于 2012-07-06T19:32:16.790 回答
0

我怀疑 PersonRepository 中带有 ID 的 Person 的 Sex 枚举值设置不正确。默认情况下,第一个枚举数的值为 0

但是在 Mary Lee 的 Person 记录中,它看起来像 Male = 0 而不是 Female = 1

于 2012-07-06T19:32:08.787 回答