映射到int列时,double转换为大数字

时间:2014-12-31 11:05:32

标签: c# automapper

我正在使用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之间是否存在双向转换的问题?

0 个答案:

没有答案