我遇到了同樣的問題。這似乎發生在您的源類型和目標類型不完全相同時。
在我的情況下,我有一個ID爲INT類型的SQL Server表。該值被映射到類型爲long的屬性的類(Int64)。這會導致期望值100被映射到類似668386727769314912之類的內容。在更改表模式以使ID爲BIGINT之後,這些值始終正確映射。
我建議仔細查看源類型和目標類型,以確保它們完全相同。很顯然,您期望隱式工作的轉換(如Int32到Int64)可能會導致問題。
這裏是將重現該問題的例子:
public class DataMapperIssue
{
public class Person
{
public long id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
}
public static void run()
{
var table = new DataTable();
table.Columns.Add("id", typeof(int));
table.Columns.Add("first_name", typeof(string));
table.Columns.Add("last_name", typeof(string));
table.Rows.Add(100, "Jeff", "Barnes");
table.Rows.Add(101, "George", "Costanza");
table.Rows.Add(102, "Stewie", "Griffin");
table.Rows.Add(103, "Stan", "Marsh");
table.Rows.Add(104, "Eric", "Cartman");
AutoMapper.Mapper.Reset();
AutoMapper.Mapper.CreateMap<IDataReader, Person>();
var results = AutoMapper.Mapper.Map<IDataReader, IList<Person>>(table.CreateDataReader());
}
}
嗯......很奇怪......這將是可能的,你給我送一些樣本數據和證明問題的樣本源對象?這應該有助於我縮小範圍。謝謝! – 2010-03-12 02:04:38