问题描述
项目中数据库字段名称与实体类名称有差别
例如。
实体类
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>>();
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)方法中用反射动态匹配字段。
也不知道我说的是不是你想要的?
这个代码怎么这么面熟。。。。看来是组织内的人
不需要配置了,AutoMapper能自动识别集合。
IDataReader reader = cmd.ExecuteReader();
List<User> uesrs = Mapper.Map<List<User>>(reader);
绝大多数情况下确实不需要进行配置,但如我所写的代码,实体类与数据库字段名称不同时,Automapper就会进行自动配置了。