首页 新闻 搜索 专区 学院

关于AutoMapper映射,求帮助

0
悬赏园豆:80 [已关闭问题] 关闭于 2013-10-19 09:41

问题描述

项目中数据库字段名称与实体类名称有差别

例如。

实体类

    public class User
    {
        public string UserName { get; set; }
        public string Password { get; set;}
    }

数据库

表名 User

字段名 Name

字段名 Password

请问如何将实体类与数据库名称对应

 

//单个实体可用如下的代码进行映射
Mapper.CreateMap<IDataReader, User>()
                  .ForMember(dest => dest.UserName, opt => opt.MapFrom(r => r.GetString(r.GetOrdinal("name"))));

//多实体请问如何操作
Mapper.CreateMap<IDataReader, IEnumerable<Repeater>>();
Hunt的主页 Hunt | 初学一级 | 园豆:21
提问于:2013-10-09 20:42
< >
分享
所有回答(2)
0

Mapper类是你自己写的吗?

如果自己写的就简单,现在一般都有Attribute,在类成员上加一个Attribute(FieldName),从数据读取数据用类似于ExecuteList<EntityClass>(param)的方式,自己来定义如何对应。
class person

{

  [DataMapping("user")]

  public string name{get;set;}

  

  [DataMapping("pwd")]

  public string password{get;set;}

}

在ExecuteList<Person>(params)方法中用反射动态匹配字段。

也不知道我说的是不是你想要的?

空明流光 | 园豆:74 (初学一级) | 2013-10-11 08:18

这个代码怎么这么面熟。。。。看来是组织内的人

支持(0) 反对(0) 西安-DB | 园豆:4 (初学一级) | 2013-10-11 09:37
0

不需要配置了,AutoMapper能自动识别集合。

IDataReader reader = cmd.ExecuteReader(); 

List<User> uesrs = Mapper.Map<List<User>>(reader);

刀是什么样的刀 | 园豆:910 (小虾三级) | 2013-10-11 21:18

绝大多数情况下确实不需要进行配置,但如我所写的代码,实体类与数据库字段名称不同时,Automapper就会进行自动配置了。

支持(0) 反对(0) Hunt | 园豆:21 (初学一级) | 2013-10-19 09:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册