2012-07-06 88 views
1
在上下文中不同的價值

我有一個 「小」 問題,ASP.NET MVC 3和枚舉:枚舉與對比的UnitOfWork

我的角色模型:

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 

我在做什麼錯?

---解決---

答案是另一個計算器後: How is interpreted an enum type with EF Code First

回答

1

是否使用EF4.3打算爲男性= 0,而不是女的?我相信enum支持僅適用於EF5

+0

是的,實體框架4.3.1。我認爲你對這個版本的不支持是正確的。我會盡力確認。 – Joao 2012-07-06 20:28:22

+0

感謝您帶我走向正確的方向:http://stackoverflow.com/q/9418958/890645 – Joao 2012-07-06 20:38:42

0

我的疑問是,人與ID在PersonRepository性別枚舉值設置不正確。默認情況下,第一個枚舉在瑪麗李的個人紀錄的0

但值看起來是= 1

+0

還有一件事,如果我定義性可爲空(公共性別?Sexo {get; set;}),PersonRepository返回空值 – Joao 2012-07-06 20:23:51

+0

鑑於我看不到您的PersonRepository代碼I會說你不使用sex.GetValueOrDefault() – HatSoft 2012-07-06 20:28:26