在我正在处理的应用程序中,数据以数据集的形式获取和返回。但是,我想让应用程序基于模型,因此我需要将数据集映射到我的自定义模型类。我遇到过 this 将数据表转换为自定义模型类的方法。
由于我无法控制返回数据集的数据源,因此无法重命名其列名。仍然在模型类中,我想使用具有我自己约定名称的属性。
案例是:假设我有一个模型
class PersonModel
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
并且源数据表包含名为Identificator
、First_Name
、Last_Name
的列。有没有办法以某种方式绑定(bind)相应的标签并将数据表的内容映射到 PersonModel
的集合?
最佳答案
首先,您将按如下方式创建映射:
Mapper.CreateMap<IDataReader, PersonModel>()
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.GetInt32(src.GetOrdinal("Identificator"))))
.ForMember(dest => dest.FirstName , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("First_Name"))))
.ForMember(dest => dest.LastName , opt => opt.MapFrom(src => src.GetString(src.GetOrdinal("Last_Name"))));
然后在您的代码中创建一个数据读取器并映射它:
// Get the data reader and store in dr variable
var people = Mapper.Map<IDataReader, List<PersonModel>>(dr);
关于c# - 从 DataTable 映射到属性名称不同于列名称的自定义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335994/