我正在使用AutoMapper
将数据表行映射到类对象中。其中一个数据表的列是double类型,其类中的等效属性是int:
DataTable source = new DataTable();
source.Columns.Add("ProductId", typeof(double));
source.Columns.Add("Code", typeof(string));
source.Columns.Add("Name", typeof(string));
source.Columns.Add("Description", typeof(string));
source.Columns.Add("Price", typeof(double));
ProductId
是数据表的两倍,类是int:
public class Products
{
public Int32 ProductId { get; set; }
public String Code { get; set; }
public String Name { get; set; }
public String Description { get; set; }
public float Price { get; set; }
}
我按照这些方式映射它们:
Mapper.CreateMap<IDataReader, IEnumerable<Products>>();
IEnumerable<Products> products = Mapper.DynamicMap<IDataReader, IEnumerable<Products>>(source.CreateDataReader());
完成映射后,例如以下行:
DataRow row = source.NewRow();
row[0] = 1.0;
row[1] = "Code";
row[2] = "Name";
row[3] = "Description";
row[4] = 4.75;
source.Rows.Add(row);
结果将是:
Code: "Code"
Description: "Description"
Name: "Name"
Price: 4.75
ProductId: 5102336
我尝试按如下方式添加值转换器,但没有任何更改。
Mapper.CreateMap<double, int>().ConvertUsing(Convert.ToInt32);
AutoMapper和IDataReader之间是否存在双向转换的问题?