2016-06-21 54 views
0

中使用的某种属性类型我有一个数据库中的一些基础数据的枚举,其中包括性别数据。例如,男士id是10,女士是11.
我使用EF
User实体中,我将使用此性别Id
我将使用用户实体作为模型对于查看
我的方法是使用MVC中的连接控制器不在db
我必须在我的视图中显示用户的搜索结果。如果我使用用户模型,结果将显示性别的ID,并且不正确。由于Id和Title的类型不同。所以不可能使用LINQ并用标题替换ID。
如何设置结果中的性别标题? enter image description hereMVC:使用映射来更改模型。查看

回答

0

我使用Automapper和view-model来解决问题。但我已经安装了Automapper 5.0.0.0。
另外我定义了一个视图模型,它与主要实体相同,但是性别类型相同。在视图模型中性别是字符串。

 var Data= Search(user); //get search result using any approach, maybe a service or etc 

     var config = new MapperConfiguration(cfg => cfg.CreateMap<User, VM_User>() 
      .ForMember(vm => vm.GENDER, opt => opt.MapFrom(u => u.GENDER == 10 ? "Male" : "Female"))); 


     List<VM_User> users = new List<VM_User>(); 
     for (int i = 0; i < Data.Count; i++) 
     { 
      users.Add(config.CreateMapper().Map<VM_User>(Data[i])); 
     } 

然后我用这些用户作为查看结果。
另外,我能忘记使用第三方(AutoMapper)和forexample有:

var result = Data.Select(x => new VM_User 
     { 
      Name = x.Name, 
      Code = x.Code, 
      Gender = x.Gender == 10 ? "Male" : "Female" 
     }).ToList(); 

但是,如果我敢肯定,在编码过程中的实体属性不会改变它是非常有用的。

+0

如果有其他方式,请分享:) – Elnaz