enum在上下文与UnitOfWork中具有不同的值

时间:2012-07-06 19:14:04

标签: c# asp.net-mvc-3 enums

我对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());
        }
    }
}

这里我的Watch显示错误的枚举值:

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

我做错了什么?

---已解决---

答案在另一个stackoverflow帖子上: How is interpreted an enum type with EF Code First

2 个答案:

答案 0 :(得分:1)

您使用的是EF4.3吗?我相信只有EF5才能提供enum支持

答案 1 :(得分:0)

我怀疑是PersonRepository中具有ID的Person的性别枚举值未正确设置。默认情况下,第一个枚举器的值为0

但是在Mary Lee的人物记录看起来像男性= 0而不是女性= 1